Hello Tensorflow用户/开发人员,
即使我调用初始化函数,记者告诉我,我的变量都没有被初始化。我使用 tf.get_variable()创建了它们。这是我的会话和图形对象的创建位置:
with tf.Graph().as_default():
# Store all scores (each score is a loss-per-episode)
init = tf.global_variables_initializer()
all_scores, scores = [], []
# Build common tensors used throughout entire session
nn.build(seq_len)
# Generate inference and loss models
[loss, train_op] = nn.generate_models()
with tf.Session() as sess:
try:
st = time.time()
# Initialize all variables (Note that! not operation tensors; but variable tensors)
print('Initializing variables...')
sess.run(init)
print('Training starts...')
for e, (input_, target) in sample_generator:
feed_dict = nn.prepare_dict(input_, target)
# Run one step of the model. The return values are the activations
# from the `train_op` (which is discarded) and the `loss` Op.
x = sess.run(tf.report_uninitialized_variables(tf.global_variables()))
print(x)
_, score = sess.run([train_op, loss],
feed_dict=feed_dict)
all_scores.append(score)
scores.append(score)
# Asses your predictions against target
if e > 0 and not (e%100):
print('Episode %05d: %.6f' % (e, np.mean(scores).tolist()[0]))
scores.clear()
except KeyboardInterrupt:
print('Elapsed time: %ld' % (time.time()-st))
pass
我之前已经将此方法称为数百万次,并且它已经完美地运行了;但现在它让我陷入困境。您认为原因可能是什么?任何建议都会受到赞赏。
P.S。我也尝试过调用 tf.local_variables_initializer();虽然记者告诉我你根本没有本地人。
提前致谢。
答案 0 :(得分:1)
感谢您的回复。
嗯,我已经弄清楚了。在构建模型之前,我不应该执行以下赋值指令:
init = tf.global_variables_initializer()
对于任何人的信息:您可能会认为" 我会执行并获得此操作的结果,称为' init&#39 ;当我在一个会话中这样做。因此,无论我在何处执行上述指定"。
没有!这不是真的。 Tensorflow决定在执行此赋值指令后立即初始化哪些变量。因此,在构建整个模型后调用它。
答案 1 :(得分:0)
如果它不存在,我怀疑你不小心降级了Tensorflow版本。 你能试试tf.initialize_all_variables吗?
如果这不起作用,您可以发布您正在使用的版本吗?
答案 2 :(得分:0)
我得到了同样的错误。但是这是我的解决方案:只需跳过init = tf.global_variables_initializer()
只需使用: sess = tf.Session sess.run(init = tf.global_variables_initializer())