TensorFlow变量无法初始化

时间:2018-10-09 14:39:53

标签: python tensorflow

X=tf.placeholder(tf.float32,[None,32,32,3])
y=tf.placeholder(tf.int64,[None])
is_training=tf.placeholder(tf.bool)

def simple_model(X,y):

    Wconv1=tf.get_variable("Wconv1",shape=[7,7,3,32],use_resource=True)
    bconv1=tf.get_variable('bconv1',shape=[32])
    W1=tf.get_variable('W1',shape=[5408,10])
    b1=tf.get_variable('b1',shape=[10])

    a1=tf.nn.conv2d(X,Wconv1,[1,2,2,1],'VALID')+bconv1
    h1=tf.nn.relu(a1)

    h1_flat=tf.reshape(h1,[-1,5408])
    y_out=tf.matmul(h1_flat,W1)+b1
    return y_out

init=tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)

    sess.run(simple_model(X,y),feed_dict={X:X_train,y:y_train})

错误是

  

PreconditionError试图使用未初始化的变量Wconv1

我不知道代码有什么问题吗?

1 个答案:

答案 0 :(得分:1)

tf.global_variables_initializer至此创建的所有全局变量进行初始化操作。这意味着,如果稍后创建其他变量,则该变量将不会被操作初始化。这是因为变量初始值设定项仅包含它们必须初始化的变量的列表,并且在您添加更多变量时不会改变(实际上,tf.global_variables_initializer()只是tf.variables_initializer(tf.global_variables())或{{1 }})。您的情况是,在较早创建tf.variables_initializer(tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES))之后,在第二次调用sess.run时将创建变量。您需要使用变量创建模型后,在 中创建初始化操作:

init