如何让tensorflow忽略一些计算?

2024-05-29 06:00:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两种情况,我想根据某个条件执行两种不同的计算,目前我使用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,它们似乎都有相同的问题


Tags: oflambda代码tftensorflow情况条件dimensions
1条回答
网友
1楼 · 发布于 2024-05-29 06:00:33

来自tensorflows文档: “警告:无论运行时选择了哪个分支,在true_fn和false_fn之外创建的任何张量或操作都将被执行。”

您没有任何执行任何操作的true\u fn或false\u fn,因此没有什么可“忽略”的。必须首先计算张量,因为它们是tf.cond中函数的输入参数。将“大量复杂计算”移动到单独的函数,然后调用该函数,如下所示:

Tensor_1 = #Input to lots of complex calculations
Result = tf.cond( my_condition, lambda: complex_calculations(Tensor_1), function_returning_eye )

我还发现,在函数中放置python for循环会破坏这种行为,并迫使tensorflow在任何情况下都对该分支求值

相关问题 更多 >

    热门问题