小编DBe*_*ger的帖子

用于测试tensorflow安装的速度基准

我怀疑是否在我的gpu盒上正确配置了tensorflow,因为在我的花式gpu机器上训练一个简单的线性回归模型(batchsize = 32,1500输入功能,150个输出变量)比在我的笔记本电脑上慢大约100倍.

我正在使用Titan X,带有现代cpu等.nvidia-smi说我只有10%的gpu利用率,但我希望这是因为批量小.我没有使用feed_dict将数据移动到计算图中.一切都来自tf.decode_csv和tf.train.shuffle_batch.

有没有人对如何轻松测试我的安装是否正确有任何建议?有没有简单的速度基准?我的笔记本电脑和gpu机器之间的速度差异非常大,以至于我预计事情配置不正确.

tensorflow

17
推荐指数
2
解决办法
1万
查看次数

在张量流中的测试时间循环数据集一次

为了评估测试数据,对数据集进行单次传递的最佳方法是什么?我想避免在python中编写数据加载脚本并使用feed_dict.相反,我想使用所有漂亮的TF基础设施进行排队,批处理等.

在cifar 示例中,测试示例的数量是硬编码的,并且代码采取num_test_examples/batch_size步骤以进行评估.使用批处理基础架构似乎应该有更好的方法来实现这一点.

似乎标准模式是在捕获队列抛出的异常时停止运行.我已经尝试了一些东西,这样当没有更多的例子来填充队列时队列会抱怨(即生产者不能再生产).这不是你想要捕获的例外.当消费者没有任何东西要消耗时,你想要捕获,即队列是空的.我该怎么做呢?

此外,如果测试示例的数量不能被批量大小整除(例如,测试示例的数量是素数),您会怎么做?

附加信息:

在实践中,我们通常通过调用do_evaluation()函数在学习期间多次评估测试数据.如果您只想处理测试数据一次,Yaroslav的答案很有用.理想情况下,每次调用do_evaluation都会在测试数据集中的每个示例上运行一次.我们需要一些机制来重置批处理器,以便您可以再次单次通过它.这是一些代码.不要使用该limit_epochs命令.它需要一个不会随机播放的批处理器并指定测试集中的批处理数(如果设置的示例数不能被minibatchsize整除,则这不起作用).该函数返回一个新的操作,用于抓取数据,tf.errors.OutOfRangeError当你在整个集合上运行时会抛出数据.第二个返回值是应该调用以重置计数器的操作.这应该是do_evaluation()函数内的第一个调用.

def single_pass(source_batcher,num_batches):
    zero = tf.constant(0, dtype=tf.int64)
    batch_count = tf.Variable(zero, name="epochs", trainable=False)
    limiter = tf.count_up_to(batch_count,num_batches)
    with tf.control_dependencies([limiter]):
      batcher = tf.identity(source_batcher)

    reset = tf.assign(batch_count, zero)

    return batcher, reset
Run Code Online (Sandbox Code Playgroud)

tensorflow

11
推荐指数
1
解决办法
1782
查看次数

标签 统计

tensorflow ×2