禁用@ tf.function装饰器进行调试?

时间:2019-05-26 20:18:14

标签: python tensorflow tensorflow2.0

在TensorFlow 2中,@tf.function装饰器允许Python函数成为TensorFlow图(或多或少),并可以带来一些性能改进。但是,以这种方式装饰时,Python no longer traces the functions each time they run。这使得使用Python调试器调试功能更加困难。是否可以暂时禁用所有@tf.function装饰器以方便调试?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

您可以使用全局布尔变量DEBUG并将其应用于autograph中的@tf.function参数,如下所示:

import tensorflow as tf
DEBUG = False

@tf.function(autograph=not DEBUG)
def foo(x):
    return x + 1

否则,由于默认情况下为autograph=True,因此不确定是否可以在不修改源代码的情况下实现。