TensorFlow中的变量初始化不一致

时间:2017-04-16 14:36:15

标签: python tensorflow initialization deterministic

我注意到,即使计算基本相同,即使对TensorFlow图进行最轻微的更改也会对结果产生随机影响。

在以下示例中,在添加变量tf.no_op之前向图表添加y会更改该变量的初始值:

def example(add_no_op=False):
    tf.reset_default_graph()
    tf.set_random_seed(42)

    x = tf.get_variable('x', shape=[], dtype=tf.float32)

    if add_no_op:
        tf.no_op()

    y = tf.get_variable('y', shape=[], dtype=tf.float32)

    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        print(sess.run([x, y]))
>>> example()
[0.47769845, 0.014582992]

>>> example(add_no_op=True)
[0.47769845, 0.3524617]

这不是我所期望的。使用相同的随机种子,即使模型略有不同,我也会期望相同的结果,只要变量以相同的顺序添加并且没有其他非确定性来源。

一般来说,当我重构一段代码时,检查它仍然产生相同的输出是确保我没有破坏它的好方法。但是,在TensorFlow中,这似乎不起作用。

为什么会发生这种情况?如何防止它发生?

0 个答案:

没有答案