在使用Pycharm调试(注意不是运行)使用Keras高级API的Tensorflow代码的时候,大部分函数时可以跟随断点进入的,但是某些函数内打了断点也进不去,不如loss函数,怎么解决呢?
为了帮助调试,您可以调用 tf.config.run_functions_eagerly(True) 来全局停用和重新启用 tf.function。这句话来自于官方教程,直接在主程序前面写上这句代码,就可以正常跳入了
该回答引用GPTᴼᴾᴱᴺᴬᴵ
如果您在 PyCharm 中打断点无法进入 Keras 高级 API 的某些函数内部(例如 loss 函数),可能是因为这些函数的实现在 C++ 中,而不是 Python 中。
您可以尝试以下方法来解决这个问题:
希望这些方法能帮到您解决问题。
Debug情况下,有的函数确实进不去(有些函数在TensorFlow中是由优化器调用的),但实际上不影响他们运行。
后面的内容引用GPTᴼᴾᴱᴺᴬᴵ
如果您在Pycharm中使用Keras高级API进行调试,但是在某些函数中打了断点但无法进入,可能是由于以下原因之一:
函数未被调用。如果您在断点处设置了一个函数,但是该函数在代码的其他部分未被调用,则调试器将无法进入该函数。请确保在您想要进入的函数处设置断点之前,该函数已被调用。
优化器中的函数。有些函数在TensorFlow中是由优化器调用的,例如损失函数。这些函数在调试期间不会被直接调用,因此您无法在其中设置断点。但是,您可以在包含这些函数的其他函数中设置断点,例如在训练循环中设置断点。
为了调试这些函数,您可以使用以下方法之一:
在包含该函数的其他函数中设置断点。例如,您可以在训练循环中设置断点来捕获损失函数的调用。
在函数的第一行打印调试信息。例如,在损失函数的第一行打印一些调试信息,以查看函数是否被正确调用。
不知道你这个问题是否已经解决, 如果还没有解决的话: