TensorFlowモデルでローカル変数を使用したいと思います。私は、次の例に私の問題をまとめています初期化されたローカル変数を使用できません
import tensorflow as tf
with tf.device('/cpu:0'):
v = tf.get_local_variable('myvar', [1, 1], initializer=tf.zeros_initializer())
with tf.control_dependencies([tf.variables_initializer([v])]):
v2 = tf.identity(v, name='myvar2')
with tf.Session() as sess:
print(sess.run(v2))
私は[[ 0. ]]
を得ることを期待するが、代わりに、私はエラーを取得する:
FailedPreconditionError (see above for traceback): Attempting to use uninitialized value myvar
[[Node: myvar/read = Identity[T=DT_FLOAT, _class=["loc:@myvar"], _device="/job:localhost/replica:0/task:0/cpu:0"](myvar)]]
私は、ローカル変数を初期化して使用することが出来るのですか?
私はTensorFlow 1.0.0とPython 3.5を使用しています。
UPDATE:
私が指摘しているその初期の割り当てをやって自分作業を行います。
import tensorflow as tf
with tf.device('/cpu:0'):
v = tf.get_local_variable('myvar', [1, 1], initializer=tf.zeros_initializer())
v_assigned = v.assign(tf.zeros(v.get_shape(), v.dtype))
v2 = tf.identity(v_assigned, name='myvar2')
with tf.Session() as sess:
print(sess.run(v2))
だからですが、セッションの終わりに常に実行を初期化子、どんなに依存関係をどのように設定しますか?それとも、私が行方不明の何か他のものがありますか?
注:私の変数でスライスされた代入を実行したいので、この解決策は十分ではありません(少なくともそれはそのままです)。返された値.assign
については、これを行うことはできません。変数ではなく、変数自体である。コントロールの依存関係としてv_assigned
を使用し、次にv
に割り当てるのはうまくいくようですが、信頼できるかどうかはわかりません。