tf.global_variables_initializer()不起作用

时间:2017-03-07 04:53:24

标签: python-3.x machine-learning tensorflow

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();虽然记者告诉我你根本没有本地人。

提前致谢。

3 个答案:

答案 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())