在TF 1.0.0中命名变量初始化

时间:2017-03-14 20:20:46

标签: tensorflow

在以下情况中使用tf.variables_initializer时遇到问题:

counter = tf.Variable(0, name='counter')
#1 counter = tf.assign_add(counter, 1)
with tf.Session() as sess:
    sess.run(tf.variables_initializer([counter]))
    #2 sess.run(tf.global_variables_initializer())
    print(sess.run(counter))
    print(sess.run(counter))

原样,此代码段会运行,但当然counter不计算在内。如果标记为#1的行已取消注释,则会出现以下错误:

  

AttributeError:'Tensor'对象没有属性'initializer'

如果标记为#2的行被取消注释并且注释了tf.variables_initializer的行,则例程将正常运行(并计数)。但我不能在我的实际代码中使用tf.global_variables_initalizer,因为我正在从检查点文件中恢复许多变量。

在这种情况下,初始化counter的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

问题是,行counter = tf.assign_add(counter, 1)会覆盖您的counter变量。以下是否解决了您的问题?

    counter = tf.Variable(0, name='counter', trainable=False)
    increment_counter = tf.assign_add(counter, 1)
    with tf.Session() as sess:
        sess.run(tf.variables_initializer([counter]))
        print('Orig counter state:')
        print(sess.run(counter))
        _ = sess.run(increment_counter)
        _ = sess.run(increment_counter)
        print('Final counter state:')
        print(sess.run(counter))