tensorflow懒惰吗?
假设你有这样一段代码tensorflow懒惰吗?,tensorflow,Tensorflow,假设你有这样一段代码 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) b是与e和f形状相同的布尔张量。 如果b的所有元素都为true,则不需要 结果就是(或等于)e 问题
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)
b是与e和f形状相同的布尔张量。
如果b的所有元素都为true,则不需要
结果就是(或等于)e
问题是:当会话以result运行,并且e的元素都为true时,是否计算f?TL;DR:TensorFlow是严格的,因此在执行
tf.select()
节点之前,将对e
和f
进行评估
这引起了一些混乱。TensorFlow首先修剪数据流图,根据该图静态地需要哪些操作来生成获取的值(即sess.run()
)的参数)。但是,一旦修剪了图形,运行时将使用严格执行,因此必须先计算操作的所有输入(例如tf.select()
),然后才能执行该操作
在模块中使用函数对条件执行提供了实验支持,但目前对此的文档很少