假设你有一些像这样的代码
import tensorflow as tf
...
f = h*y + z*t #Just some expression involving other tensors.
e = ... # some expression that does not involve f.
result = tf.select(b, e, f)
sess.run(result)
Run Code Online (Sandbox Code Playgroud)
b是与e和f相同形状的布尔张量.如果b的所有元素都评估为真,那么我们不需要f,结果将只是(或等于)e.
问题:当会话以结果运行,并且e的元素都是真的时,是否会被评估?
mrr*_*rry 14
TL; DR: TensorFlow是严格,所以两者e和f所述之前将被评估tf.select()的节点执行.
这引起了一些混乱.TensorFlow首先根据静态需要哪些操作来修剪数据流图,以生成所获取的值(即参数sess.run()).但是,一旦修剪了图形,运行时就会使用严格执行,从而tf.select()必须在该操作执行之前计算所有操作的输入(例如).
tf.control_flow_ops使用该tf.control_flow_ops.cond()函数在模块中有条件执行的实验支持,但目前这种情况很少.
| 归档时间: |
|
| 查看次数: |
2363 次 |
| 最近记录: |