在 Tensorflow 中使用 tf.assign 时的竞争条件
Race condition when using tf.assign in 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]);
我的答案是 3 或 0inf..我唯一能想到的就是将 sess.run 拆分为:
_ = sess.run([assign_op]);
answer = sess.run([divide_op]);
我认为像上面那样创建操作依赖项可以解决存在竞争条件的问题,但事实并非如此。有人知道该怎么办吗?
您想查看 control_dependencies 流量控制函数:
https://www.tensorflow.org/api_docs/python/tf/Graph#control_dependencies
with tf.control_dependencies([assign_op]):
divide_op = y/assign_op
这将确保 "assign_op" 在块中的图形元素之前完成。
使用 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]);
我的答案是 3 或 0inf..我唯一能想到的就是将 sess.run 拆分为:
_ = sess.run([assign_op]);
answer = sess.run([divide_op]);
我认为像上面那样创建操作依赖项可以解决存在竞争条件的问题,但事实并非如此。有人知道该怎么办吗?
您想查看 control_dependencies 流量控制函数:
https://www.tensorflow.org/api_docs/python/tf/Graph#control_dependencies
with tf.control_dependencies([assign_op]):
divide_op = y/assign_op
这将确保 "assign_op" 在块中的图形元素之前完成。