tensorflow变量没有正确初始化

时间:2017-11-19 18:08:44

标签: tensorflow tensorflow-gpu

在这里,我尝试使用一个变量创建一个简单的模型,但在所有gpus中都是相同的。我试着初始化变量。但是,我没有正确初始化它。

import tensorflow as tf 

def test_model(num):
    mu = 1.0
    sigma = 0.1
    with tf.variable_scope("same_on_all_gpu", reuse=True):
        var1 = tf.Variable(tf.truncated_normal(shape=(1,1), mean = mu, stddev = sigma))
    return tf.add(var1, num)

with tf.device("/gpu:" + str(0)):
    with tf.name_scope('%s_%d' % ("tower_gpu", 0)) as scope:
        ret0 = test_model([[0]])

with tf.device("/gpu:" + str(1)):
    with tf.name_scope('%s_%d' % ("tower_gpu", 1)) as scope:
        ret1 = test_model([[1]])

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    r0, r1 = sess.run([ret0,ret1],{})
    print("r0 " + str(r0))
    print("r1 " + str(r1))

我得到了这个输出:

r0 [[ 0.]]
r1 [[ 0.]]

1 个答案:

答案 0 :(得分:0)

我无法测试您的代码,但我认为当test_model返回时,您将保留用于创建变量的same_on_all_gpu范围。

reuse中将True设置为等于tf.variable_scope,可以访问当前作用域及其子作用域中的变量,但不能访问当前作用域之外的变量。 / p>