解开an中错误的原因

2024-04-25 22:21:44 发布

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

我的代码中有一个bug,但由于theano的工作方式,很难找到它的确切原因。你知道吗

按照异常详细信息中的提示,我设置了theano.config.optimizer='None'theano.config.exception_verbosity='high',但这还不够。你知道吗

例如,在我的例子中,两个张量之间的点积有一个问题。stacktrace让我经历了很多,找到了一个特定的函数,它似乎包含了对theano.tensor.dot的有问题的调用,但是我找不到代码的确切位置,因为我试图通过keras实现一些东西,它变得更加复杂和纠结。你知道吗

有什么方法可以获得有关apply节点的更多详细信息吗?我尝试过使用StepMode,因为它似乎附加到节点上,但是如果有一种方法可以让该工具打印执行节点中代码的确切行,我不知道它是什么。当问题发生时,我尝试使用它来打印stacktrace,但它打印的stacktrace与异常几乎相同。你知道吗


Tags: 方法代码noneconfig节点方式exception详细信息
2条回答

您应该尝试使用anaotest_values。这样,异常将准确地在发生错误的行上引发,而不是在编译图形之后。你知道吗

您需要将theano.config.compute_test_value标志更改为'raise',这样,如果存在没有test\u值的输入张量,您将得到一个错误,以确保所有的测试计算都将传播到错误发生的点。你知道吗

如果您想在代码中找到使用theano.tensor.dot的点,可以使用使用traceback.print_stack的包装器代码对其进行monkeypatch:

import traceback
original_dot = theano.tensor.dot

def debug_wrapper(*args,**kw):
    traceback.print_stack()
    return original_dot(*args,**kw)
theano.tensor.dot = debug_wrapper

这样,无论何时调用theano.tensor.dot(在修补之后),它都会向您显示堆栈,就像回溯消息中的堆栈一样,并且仍然执行它的工作。请注意,我对theano不是很熟悉,所以这是一个通用的python调试解决方案,可能有一些特定于theano的方法可以让您执行类似的操作。你知道吗

相关问题 更多 >