我想测量我的会话运行推理操作所需的时间。我用time来测量它,如下所示
start = time.clock()
sess.run([ops['pred']], feed_dict=feed_dict)
end = time.clock()
elapsed_time_batch = end-start我在相同的数据集和平均值上多次这样做。问题是-我得到了非常不同的平均时间测量( 1.7ms比1.2ms )。即使它的“仅仅”0.5ms的差异,这是一个很大的相对差异(0.5vs1.7是约30%)。
我尝试为会话设置一些GPU选项,如下所示:
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.95
config.gpu_options.allow_growth = False
config.allow_soft_placement = True
config.log_device_placement = False
if limit_gpu:
gpu_idx = str(gpu_idx)
os.environ["CUDA_VISIBLE_DEVICES"] = gpu_idx
else:
os.environ["CUDA_VISIBLE_DEVICES"] = "0, 1"
sess = tf.Session(config=config)但这并没有解决问题。什么可以是这个变化的原因,我如何稳定它,以获得一个更可靠的时间阅读。
我运行在一个带有4个GPU的linux服务器上(在这次测试中,我只限于1 GPU--一个Titan Xp)。
发布于 2018-05-06 11:14:16
我最终想出了答案,所以我在这里为将来可能遇到这种情况的人张贴答案。
在这里,函数time.clock()似乎不是正确的选择(详见this答案)。
解决方案是使用timeit.timer()函数:
from timeit import default_timer as timer
start = timer()
sess.run([ops['pred']], feed_dict=feed_dict)
end = timer()
elapsed_time_batch = end-starthttps://stackoverflow.com/questions/50148718
复制相似问题