1
tf.assign()を使用する際の競合条件をどのように扱いますか?例えば 、私のコードは、次のされている場合:Tensorflowでtf.assignを使用する場合の競合条件
y = tf.Variable(6,trainable=False,name='y');
x = tf.Variable(0,trainable=False,name='x');
assign_op = tf.assign(x, 2);
divide_op = y/assign_op;
answer = sess.run([divide_op]);
私の答えは..私はこれにsess.runを分割されたと考えることができる唯一のこと3か0infのいずれかである:
_ = sess.run([assign_op]);
answer = sess.run([divide_op]);
上記のように操作依存関係を作成すると、競合状態が発生するという問題は解決しますが、そうではないと考えました。誰がこれについて何をすべきか知っていますか?
したがって、私は割り当て操作からの参照を連鎖している場合、先に進む前に前の割り当てが完了していることを確認するために、複数のcontrol_dependenciesが必要ですか? assign_op参照を2か所で使用している場合はどうなりますか?どちらの方程式もcontrol_dependencies内に入ることができますか? 私はそれを試して、ポストバックします。ありがとう! –
私が正しく理解していれば、それらがすべて独立していればリスト[]に追加することができるはずです。[assign_op、assign_op2、assign_op3]。操作順序にあいまい性が残っている場合は、いくつかのcontrol_dependenciesを変更する必要があります。 – mazecreator
さらに、各.run()の後にグラフが最終的にリセットされるため、変数に値を割り当てる場合にのみ、分割sess.run()が機能します。これを回避するために、1年前に提案されたpartial_run()がありました。これはPython APIに組み込まれているかどうかわかりません。 – mazecreator