当我运行相同的tensorflow-r1.0程序两次时出现不同的错误

时间:2017-04-01 14:56:22

标签: python tensorflow

我第一次运行程序时收到错误:

  

tensorflow.python.framework.errors_impl.FailedPreconditionError:尝试使用未初始化的值noise_z / 0__mnn / bias1

但是当我再次运行它时,错误变成了:

  

tensorflow.python.framework.errors_impl.FailedPreconditionError:尝试使用未初始化的值noise_z / 1__mnn / 0weight _

请注意,变量名称不同。调试非常烦人。我想知道为什么会这样,我该如何解决?

以下是错误涉及的代码:

with tf.variable_scope('noise_z'):
    for noise_idx in range(num_noise):
        noise = gaussian_sampler(mu_noise, var_noise, 1)
        noise_vec = multi_layer_nn(noise, [dim_noise, 64, embedding_size], name=str(noise_idx)+'_')
        noise_vecs.append(noise_vec)

def fully_con_layer(input_, fan_in, fan_out, name, initializer=tf.orthogonal_initializer()):
    w = tf.get_variable(name+'_weight_', shape=[fan_in, fan_out], initializer=initializer)
    b = tf.get_variable('bias'+name, [fan_out], initializer=tf.random_uniform_initializer())
    return tf.nn.sigmoid(tf.matmul(input_, w)+b)

def multi_layer_nn(input_, num_unit_each_layer, name, initializer=tf.orthogonal_initializer()):
    x = input_
    num_layer = len(num_unit_each_layer)-1
    for layer in range(num_layer):
        with tf.variable_scope(name+'_'+"mnn"):
            x = fully_con_layer(x, num_unit_each_layer[layer], num_unit_each_layer[layer+1], str(layer))
    return x 

1 个答案:

答案 0 :(得分:1)

如果在调用函数之前运行tf.global_variables_initializer()sess.run(init_op)(正如您在评论中所做的那样),则不会初始化函数中定义的变量。在定义所有变量后,您必须运行sess.run(init_op)