修复 TensorFlow 中的问题调试

2024 年 8 月 29 日 | 4 分钟阅读

要恢复问题,请编辑 debug_mnist.Py,更改唯一行

数值稳定的 move-entropy 实现

使用 -debug 标志重新运行,如下所示

tfdbg> 提示符下,输入以下命令

声明没有张量被标记为包含 naninf 值,并且准确性得以保持,防止卡住。

调试 tf-learn Estimators 和 Experiments

实验是 tf.Contrib.Examine 中比 Estimator 更好的集合。它提供了一个用于训练并将其与模型进行比较的单一接口。要调试测试对象的 teach ()evaluate () 调用,我们可以在调用其构造函数时使用关键字参数 train_monitors 和 eval_hooks。

示例

来自 tensorflow.python 导入 debug 作为 tf_debug

LocalCLIDebugHook 还允许我们配置一个 watch_fn,该函数可用于灵活地指定要在会话的 session.Run() 调用中监视的张量,例如获取和 feed_dict 的不同状态的特征。

借助 tfdbg 调试 Keras 模型

要将 TFDBG 与 Keras 一起使用,请允许 Keras 后端使用 TFDBG 包装的咨询项目。要在调试过程中使用 CLI 包装器

使用 tfdbg 调试 tf-slim

TFDBG 支持使用 tf-slim 调试训练和评估。说明和评估需要略微不同的调试工作流程。

使用 tf-slim 调试训练

TFDBG 支持借助 tf-slender 进行 TensorFlow 训练调试。 训练和评估略有不同的 TensorFlow 调试工作流程来工作。

调试评估

要调试教学系统,请向 slender.Mastering.Educate() 的 session_wrapper 参数提供 LocalCLIDebugWrapperSession。

远程运行会话的离线调试

为了在这些实例中执行 TensorFlow 调试版本,我们可以使用 tfdbg 的 offline_analyzer 二进制文件。它对转储事实目录进行操作。这是针对较低级别的会话 API 以及更高级别的 Estimator 和测试 API 完成的。

调试远程 tf.Sessions

如果我们直接与 python 中的 tf. Session API 进行交互,我们可以通过使用 tfdbg 方法配置我们使用 session.Run() 技术调用的 RunOptions proto。

在我们可以访问终端的环境中(例如,可以访问上面代码中共享存储位置的本地计算机),我们可以通过 tfdbg 的 offline_analyzer 二进制文件在共享存储上的倾销目录中加载和检查数据。

示例

探索 Tensorflow 架构和重要术语

会话提供了一种更简单的方法来生成可以离线分析的文档系统转储。要应用它,请将我们的会话包装在 tf_debug.DumpingDebugWrapperSession 中。

示例

watch_fn 参数接受一个 Callable,它允许我们配置要观察的张量,以观察不同的 consultation.Run() 调用,例如获取和 feed_dictrun() 名称和状态的函数。

C++ 和其他语言

如果我们的版本代码是用 C++ 或其他单词编写的,我们还可以修改 RunOptions 的 debug_options 主题以调试可以离线检查的转储。有关更多信息,请参阅 proto 定义。

调试远程运行的 tf-learn Estimators 和 Experiments

我们可以使用非交互式 DumpingDebugHook

然后,此钩子可以以与本文件中前面描述的 LocalCLIDebugHook 示例相同的方式使用。随着 Estimator 或实验的评估进行,tfdbg 创建具有以下调用示例的目录:/shared/garage/place/tfdbg_dumps_1/run__。每个列表对应于 session. Run() 名称,该名称构成了 suit()compare() 调用。我们可以加载这些目录,并使用 tfdbg 提供的 offline_analyzer 以离线方式在命令行界面中检查它们。