操作是tf.group()按顺序执行的吗?
如果它们没有按顺序执行,是否有类似的操作使它们按顺序运行?或者有一个干净的方式来按顺序运行它们?
我的目标是一次又一次地运行操作A和B,即
sess.run(A)
sess.run(B)
sess.run(A)
sess.run(B)
sess.run(A)
sess.run(B)
sess.run(A)
sess.run(B)
...
Run Code Online (Sandbox Code Playgroud)
Lio*_*ior 10
操作不一定按顺序执行.
这是一个证明这一点的测试:
import tensorflow as tf
sess = tf.InteractiveSession()
a = tf.Variable(1.0)
b = tf.Variable(10.0)
c = tf.Variable(0.0)
grp = tf.group(tf.assign(c, a), tf.assign(c, b)) # this is the group op
for i in range(100):
sess.run(tf.global_variables_initializer()) # initialize c each time
sess.run(grp) # run the group op
print(sess.run(c)) # observe results
Run Code Online (Sandbox Code Playgroud)
当我在cpu上运行它时,我会得到一些迭代产生1.0和一些10.0.
tf.group 不要求操作在同一设备上,这意味着他们不能按照订单进行操作.
如果您希望操作按顺序执行,请确保使用它们构建它们 control_dependencies
import tensorflow as tf
sess = tf.InteractiveSession()
a = tf.Variable(1.0)
b = tf.Variable(10.0)
c = tf.Variable(0.0)
op1 = tf.assign(c, a)
with tf.get_default_graph().control_dependencies([op1]):
op2 = tf.assign(c, b) # op2 will execute only after op1
grp = tf.group(op1,op2)
for i in range(100):
sess.run(tf.global_variables_initializer())
sess.run(grp)
print(sess.run(c))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2276 次 |
| 最近记录: |