Python 3.x 张量流中梯度累积的有效方法
似乎已经有一些关于“如何”在TensorFlow中累积梯度的问题了。这是一个和一个 公认的建议是执行以下操作:Python 3.x 张量流中梯度累积的有效方法,python-3.x,tensorflow,deep-learning,Python 3.x,Tensorflow,Deep Learning,似乎已经有一些关于“如何”在TensorFlow中累积梯度的问题了。这是一个和一个 公认的建议是执行以下操作: opt = tf.train.AdamOptimizer() tvs = tf.trainable_variables() accum_vars = [tf.Variable(tf.zeros_like(tv.initialized_value()), trainable=False) for tv in tvs]
opt = tf.train.AdamOptimizer()
tvs = tf.trainable_variables()
accum_vars = [tf.Variable(tf.zeros_like(tv.initialized_value()), trainable=False) for tv in tvs]
zero_ops = [tv.assign(tf.zeros_like(tv)) for tv in accum_vars]
gvs = opt.compute_gradients(rmse, tvs)
accum_ops = [accum_vars[i].assign_add(gv[0]) for i, gv in enumerate(gvs)]
train_step = opt.apply_gradients([(accum_vars[i], gv[1]) for i, gv in enumerate(gvs)])
在培训循环中,我们有:
while True:
sess.run(zero_ops)
for i in xrange(n_minibatches):
sess.run(accum_ops, feed_dict=dict(X: Xs[i], y: ys[i]))
sess.run(train_step)
我在一个示例中成功地实现了这方面的一个最小示例,但我为解决方案的特殊性而烦恼。此外,如笔记本所示,当第二次运行培训时,累加器会出现问题。我现在不清楚该如何解决这个问题 因此,我找到了解决问题的方法,并将该方法发布在了一篇文章中。关键是在编译新图形并在同一笔记本中再次运行培训时,重置默认图形 因此,我们: tf.reset_default_graph() 模型=mnist_网络(种子=42)