Tensorflow TF 1.0.0中的命名变量初始化
我在以下情况下使用Tensorflow TF 1.0.0中的命名变量初始化,tensorflow,Tensorflow,我在以下情况下使用tf.variables\u初始值设定项时遇到问题: 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()) pr
tf.variables\u初始值设定项时遇到问题:
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))
按原样,此代码段运行,但当然计数器
不计算在内。如果标记为#1
的行未注释,则出现以下错误:
AttributeError:“Tensor”对象没有属性“initializer”
如果标记为#2
的行未注释,并且带有tf.variables\u初始值设定项的行已注释,则例程将正常运行(并计数)。但是我不能在我的实际代码中使用tf.global\u variables\u initializer
,因为我正在从检查点文件中恢复许多变量
在这种情况下,初始化计数器的正确方法是什么?问题是行计数器=tf.assign\u add(counter,1)
覆盖了计数器变量。下面的问题解决了吗
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))
就这样。谢谢虽然我仍然不明白为什么tf.global\u variables\u initializer
使用原始代码,而tf\u variables\u initializer
没有。