我注意到在训练期间,张量流不断变慢。我在训练期间绘制了每个样本的计算时间,并且观察到在大致恒定的第一个80k之后,它继续增加;更重要的是,它似乎遵循一种模式,其中计算时间每20k步骤颠簸并保持不变。
经过400k步骤后,每个样本的计算时间从1.46增加到25.11ms,增加了x17,显然不受欢迎。
当我停止训练并从最后保存的模型恢复时,每个样本的计算时间会回落到~1.46毫秒,所以这不是来自模型。
是否有人遇到过同样的问题,原因是什么? (我的下一步是在不保存摘要的情况下运行以尝试在此级别找到问题。)
更新:当摘要关闭时,计算时间保持不变。
更新:在训练循环之前调用和trace_level
上的摘要没有抛出错误。
更新并部分回答。
计算时间中的通货膨胀似乎是由于在评估我的摘要时使用值为tf.RunOptions.FULL_TRACE
的{{1}}。
更换
run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
smry = sess.run(smry_op, feed_dict=feed_dict, options=run_options)
与
smry = sess.run(smry_op, feed_dict=feed_dict)
摆脱了这个问题。当然,问题仍然是为什么FULL_TRACE会产生如此不断增长的开销,因此我将问题保持开放。