如何在Tensorflow中增加变量?

Mat*_*ane 3 python-2.7 tensorflow

当尝试在Tensorflow中使用主管时,我意识到:

您的培训操作负责增加全局步骤值.

(参考)

那么如何在Tensorflow中增加图形中的变量?

Mat*_*ane 18

很简单的解决方案

global_step = tf.Variable(1, name='global_step', trainable=False, dtype=tf.int32)
increment_global_step_op = tf.assign(global_step, global_step+1)
Run Code Online (Sandbox Code Playgroud)

然后,当你想增加它时,只需在当前运行该操作tf.Session sess.

step = sess.run(increment_global_step_op)
Run Code Online (Sandbox Code Playgroud)

放入的结果step是增量后递增变量的值.在这种情况下,global_step的值在递增之后.所以2.

如果您像我一样使用global_step,请将其与您一起运行training_op.

result = sess.run([out, increment_global_step_op], {x: [i]})
Run Code Online (Sandbox Code Playgroud)

  • +1用于放置trainable = False.请注意,assign方法可以替换为tf.assign_add(global_step,1) (2认同)

Sal*_*ali 11

递增/递减值是一种常见操作,因此TF具有简化图形创建的操作:tf.assign_add()tf.assign_sub().它们结合了两个操作(tf.assign()tf.add/ tf.sub).

以下是使用示例:

import tensorflow as tf

x = tf.Variable(0, name='counter')
inc = tf.assign_add(x, 1, name='increment')

with tf.Session() as sess:
    # writer = tf.summary.FileWriter('logs', sess.graph)
    sess.run(tf.global_variables_initializer())
    for _ in xrange(5):
        print sess.run(inc)
Run Code Online (Sandbox Code Playgroud)

如果您将比较此示例中的张量板图表并在您自己的示例中,您将看到图表具有较少的节点数量.