1. ホーム
  2. python

[解決済み] TensorFlowの変数に値を割り当てるには?

2023-05-24 05:36:44

質問

pythonでtensorflowの変数に新しい値を代入しようとしています。

import tensorflow as tf
import numpy as np

x = tf.Variable(0)
init = tf.initialize_all_variables()
sess = tf.InteractiveSession()
sess.run(init)

print(x.eval())

x.assign(1)
print(x.eval())

しかし、私が得た出力は

0
0

ということで、値は変わっていません。何が足りないのでしょうか?

どのように解決するのですか?

TF1では、ステートメント x.assign(1) は実際には値 1x を作成するのではなく tf.Operation を作成し、それを明示的に 実行 を実行して変数を更新します。 Operation.run() または Session.run() は操作を実行するために使用することができます。

assign_op = x.assign(1)
sess.run(assign_op)  # or `assign_op.op.run()`
print(x.eval())
# ==> 1

(* 実際には、これは tf.Tensor を返し、変数の更新された値に対応します。)

しかし、TF2 では x.assign(1) は熱心に値を割り当てるようになりました。

x.assign(1)
print(x.numpy())
# ==> 1