【发布时间】:2017-01-27 12:20:19
【问题描述】:
我训练了一个 RNN 网络,第一个 epoch 用了 7.5 小时。但是随着训练过程的运行,tensorflow运行的越来越慢,第二个epoch用了55个小时。我检查了代码,大多数随着时间变慢的 API 是这些:
-
session.run([var1, var1, ...], feed_dict=feed), -
tensor.eval(feed_dict=feed)。
比如一行代码是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] 将节点添加到 tensorflow 的图中?我怀疑这可能是原因。这行代码会周期性调用多次,self不是tf.train.optimizer的对象。
【问题讨论】:
-
听起来你可能有内存泄漏。尝试按照说明here 查找原因。如果
self是tf.train.Optimizer对象,[numpy.zeros(...) for g in self.compute_gradients]线可能会向图中添加节点。
标签: tensorflow