Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 张量流中梯度累积的有效方法_Python 3.x_Tensorflow_Deep Learning - Fatal编程技术网

Python 3.x 张量流中梯度累积的有效方法

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]

似乎已经有一些关于“如何”在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]                                        
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)