2017-04-01 73 views
2

在我第一次運行我的程序,我得到了錯誤:不同的錯誤,當我運行相同tensorflow-R1.0程序兩次

tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value noise_z/0__mnn/bias1

但是當我再次運行它,錯誤變成了:

tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value 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 
+0

在重新運行之前是否重置了圖形? 'tf.reset_default_graph()' – TasosGlrs

+0

@Tasos感謝您的回覆!但是我用'python xxx.py'運行程序爲什麼我需要將這段代碼插入到程序中再次運行它? – southdoor

+0

我以爲你可以在筆記本上運行它。我看到每次錯誤都是針對不同的變量。如果你使用'tf.initialize_all_variables()',你會得到什麼? – TasosGlrs

回答

1

如果運行tf.global_variables_initializer()sess.run(init_op)調用函數之前(因爲你說你在您的評論做),在函數中定義的變量會未初始化。在定義所有變量後,您必須運行sess.run(init_op)

相關問題