在向后传递中调试 nan

2024-01-09

我正在尝试调试一个有点复杂且非规范的神经网络架构。计算前向传递很好,并且给了我预期的结果,但是当我尝试使用 Adam 或任何标准优化器进行优化时,即使在学习率非常小的一次迭代之后,我到处都得到 nan。我正在尝试对它们进行本地化,并且想知道是否有一种方法可以捕获 nan 的第一次出现并检测它出现在哪个操作中?我试过tf.add_check_numerics_ops()但它似乎没有做任何事情,或者也许我使用不正确。


调试 NaN 可能很棘手,特别是如果您有一个大型网络。tf.add_check_numerics_ops() https://www.tensorflow.org/api_docs/python/tf/compat/v1/add_check_numerics_ops向图中添加操作,断言图中的每个浮点张量不包含任何 NaN 值,但默认情况下不运行这些检查。相反,它返回一个可以定期运行或在每个步骤上运行的操作,如下所示:

train_op = ...
check_op = tf.add_check_numerics_ops()

sess = tf.Session()
sess.run([train_op, check_op])  # Runs training and checks for NaNs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在向后传递中调试 nan 的相关文章

随机推荐