为什么有时tensorflow会随着训练过程而变得越来越慢?

时间:2016-08-22 02:44:18

标签: tensorflow

我训练了一个RNN网络,第一个时期用了7.5个小时。但随着训练过程的进行,张量流越来越慢,第二个时期使用了55个小时。我检查了代码,大多数随时间变慢的API是:

  1. session.run([var1, var1, ...], feed_dict=feed)
  2. tensor.eval(feed_dict=feed)
  3. 例如,一个行代码是session.run[var1, var2, ...], feed_dict=feed),因为程序开始,它使用0.1秒,但随着进程运行,这行代码所用的时间变得越来越大,10小时后,时间这条线花费了10秒钟。

    我已经好几次降临了。这引发了什么?我怎么能避免这个?

    如果这行代码:self.shapes = [numpy.zeros(g[1].get_shape(), numy.float32) for g in self.compute_gradients]将节点添加到张量流图中?我怀疑这可能是原因。这行代码会定期多次调用,self不是tf.train.optimizer的对象。

2 个答案:

答案 0 :(得分:5)

创建图表后尝试完成图表(graph.finalize())。这将阻止将操作添加到图表中。我也认为self.compute_gradients正在向图表添加操作。尝试在循环外定义操作并在循环中运行

答案 1 :(得分:2)

我有类似的问题。我的解决方案是

tf.reset_default_graph()
每个纪元或样本后

。这会重置图表,并释放以关闭会话的方式使用的所有资源。