gpt4 book ai didi

python - 凯拉斯 + tensorflow : Debug NaNs

转载 作者:太空狗 更新时间:2023-10-30 00:16:17 26 4
gpt4 key购买 nike

这是一个关于如何在 tensorflow 图中找到 Nan 的第一次出现的好问题:

Debugging nans in the backward pass

答案很有帮助,这是它的代码:

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

sess = tf.Session()
sess.run([train_op, check_op]) # Runs training and checks for NaNs

显然,同时运行训练和数值检查将在第一次遇到 Nan 时立即导致错误报告。

如何将其集成到 Keras 中?在文档中,我找不到类似这样的内容。

我也检查了代码。更新步骤在这里执行: https://github.com/fchollet/keras/blob/master/keras/engine/training.py

有一个名为 _make_train_function 的函数,其中创建了计算损失和应用更新的操作。稍后调用它来训练网络。

我可以像这样更改代码(始终假设我们在 tf 后端上运行):

check_op = tf.add_check_numerics_ops()

self.train_function = K.function(inputs,
[self.total_loss] + self.metrics_tensors + [check_op],
updates=updates, name='train_function', **self._function_kwargs)

我目前正在尝试正确设置它,但不确定上面的代码是否真的有效。也许有更简单的方法?

最佳答案

我遇到了完全相同的问题,并找到了 check_add_numerics_ops() 函数的替代方法。我没有走那条路,而是使用 TensorFlow Debugger 遍历我的模型,按照 https://www.tensorflow.org/guide/debugger 中的示例弄清楚我的代码在哪里生成 nan。此代码段应可用于将 Keras 使用的 TensorFlow session 替换为调试 session ,从而允许您使用 tfdbg

from tensorflow.python import debug as tf_debug
sess = K.get_session()
sess = tf_debug.LocalCLIDebugWrapperSession(sess)
K.set_session(sess)

关于python - 凯拉斯 + tensorflow : Debug NaNs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44462550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com