2017-05-15 4 views
0
import tensorflow as tf 
import numpy as np 


def myfunction(): 
    return_variable = tf.Variable(initial_value=0.0, dtype=tf.float32) 
    return return_variable 

a = np.random.randint(1, 5, size=(3, 2, 2)) 
a_variable = tf.Variable(a, tf.float32) 
with tf.Session() as sess: 
    sess.run(tf.initialize_all_variables()) 
    print('a_variable') 
    print(sess.run(a_variable)) 
    print('myfunction') 
    print(sess.run(myfunction())) 

私の関数内の変数を初期化したいと思います。コードを実行すると、「初期化されていない値Variable_1を使用しようとしています」というエラーが表示されます。関数で定義された変数を 'tf.initialize_all_variables()'で初期化できない理由を知りたい。関数で変数を使用するにはどうすればよいですか?私はtensorlfowの関数でtf.Variableをどのように定義できますか?

答えて

0

myfunction()を呼び出すときにのみ変数が作成され、tf.initialize_all_variables()を実行したときに変数が既に作成されている場合は初期化されます。したがって、すべての変数を初期化する前にmyfunction()に電話する必要があります。通常は、myfunction()を使用してグラフ全体を構築してから、トレーニングの直前に初期化するので、問題はありません。myfunction()は、呼び出すたびに新しい(同一の)変数を作成します。同じ基本変数へのポインタを返さない。

以下のコードを参照してください:

import tensorflow as tf 
import numpy as np 
def myfunction(): 
    return_variable = tf.Variable(initial_value=0.0, dtype=tf.float32) 
    return return_variable 
a = np.random.randint(1, 5, size=(3, 2, 2)) 
a_variable = tf.Variable(a, tf.float32) 
with tf.Session() as sess: 
    x = myfunction() # Create variable x, not initialized yet 
    sess.run(tf.initialize_all_variables()) # Initialize all variables that already exist in your graph, including x, but y does not exist yet 
    print('a_variable') 
    print(sess.run(a_variable)) 
    print('x') 
    print(sess.run(x)) # Works fine: x is initialized 
    print('y') 
    y = myfunction() # Create variable y, not initialized 
    print(sess.run(y)) # This crashes, because y is not initialized 
関連する問題