我有两种情况,我想根据某个条件执行两种不同的计算,目前我使用tf.cond在这两种条件之间切换,但是我注意到Tensorflow计算了这两种情况,然后简单地使用条件来确定返回哪一种。我的代码基本上就是这样的:
Tensor_1 = #Lots of complex calculations
Tensor_2 = tf.eye(dimensions)
Result = tf.cond( my_condition, lambda: Tensor_1, lambda: Tensor_2 )
我的问题是,其中一个计算比另一个慢得多,但也少得多,我如何告诉Tensorflow不要执行计算,除非满足条件
我也试过tf.case和tf.switch_case,它们似乎都有相同的问题
来自tensorflows文档: “警告:无论运行时选择了哪个分支,在true_fn和false_fn之外创建的任何张量或操作都将被执行。”
您没有任何执行任何操作的true\u fn或false\u fn,因此没有什么可“忽略”的。必须首先计算张量,因为它们是tf.cond中函数的输入参数。将“大量复杂计算”移动到单独的函数,然后调用该函数,如下所示:
我还发现,在函数中放置python for循环会破坏这种行为,并迫使tensorflow在任何情况下都对该分支求值
相关问题 更多 >
编程相关推荐