次のコードセグメントの実行方法によってちょっと混乱します。TensorFlow:変数を何度も初期化する
import tensorflow as tf
x = tf.Variable(0)
init_op = tf.initialize_all_variables()
modify_op = x.assign(5)
with tf.Session() as sess:
sess.run(init_op)
print(sess.run(x))
x += 3
print(sess.run(x))
sess.run(init_op) # Trying to initialize x once again to 0
print(sess.run(x)) # Gives out 3, which leaves me confused.
print(sess.run(modify_op))
print(sess.run(x)) # Gives out 8, even more confusing
これが出力されます。
0
3
3
5
8
は、それがラインx += 3
は、デフォルトのグラフの一部ではないということですか?それとも別のことが起こっているのですか?いくつかの助けに感謝されます、ありがとう!
これは、x = x + 3行をグラフに追加したためです。明確にするために:あなたが定義した古いxにはvariable_0という名前があります。新しいテンソルはもはやvariable_0ではなく、variable_1 = variable_0 + 3です。あなたが3(0 + 3)と8(5 + 3)を得る理由を説明します。 Variable_0はまだどこかに存在し、sess.run(graph.get_tensor_by_name( "variable_0"))を印刷すると変更されません。期待通りの結果が得られます。あなたの変数の名前が何であるかを知るには、あなたのグラフをグラフdefで見るだけです。 – jean
ありがとう@ジャン、それは私を助けた。 – stark