2017-04-01 13 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)を実行する必要があります。