TensorFlow调试功能初试

之前在pycharm里面进行tf程序的调试一直会报错,不过前几天通过命令行的方式完成了调试。所以我大概经过了这样一个曲折的经历: 网上下了代码命令行没办法调试(当时不太懂,反正不知道卡在哪一步调试失败)–>在编译器里不能调试–>查资料改各种配置还是不能运行–>偶然在命令行下调试成功== 真的是费尽周折还是以最简单的方式解决战斗。好吧,其实真的调试完之后其实发现很简单。也可能是现在还没有什么实际的
摘要由CSDN通过智能技术生成

之前在pycharm里面进行tf程序的调试一直会报错,不过前几天通过命令行的方式完成了调试。所以我大概经过了这样一个曲折的经历:
网上下了代码命令行没办法调试(当时不太懂,反正不知道卡在哪一步调试失败)–>在编译器里不能调试–>查资料改各种配置还是不能运行–>偶然在命令行下调试成功==
真的是费尽周折还是以最简单的方式解决战斗。好吧,其实真的调试完之后其实发现很简单。也可能是现在还没有什么实际的应用场景,仅仅按照官网的教程过了一遍,所以体会不深吧。
这里就记录一下遇到的错误跟常用命令吧。

调试中遇到的错误

1,不要再IDE里面进行调试,我还在同学的电脑上进行了尝试,应该是IDE的配置或者什么不对,总是会报错,无法显示出调试界面。
2,不要按照官网上面的介绍,使用python -m命令进行调试,因为这个命令功能跟python差不多,好像是用来相当于import,叫做当做模块来启动之类的。从官网上下载的debug_mnist.py文件这样是无法执行的==
3,还遇到过几个问题,不过都是因为我修改了debug_mnist.py文件内容才遇到的,这里就不说了

调试

下载了该文件之后直接运行下面的命令就可以了,我们会看到如下所示界面:

python debug_minst.py --debug

这里写图片描述

看官方文档,我们可以知道,tfdbg只需要做少量的修改就可以实现调试功能。就是下面两行代码:

# Let your BUILD target depend on "//tensorflow/python/debug:debug_py"
#引入tf_debug包
from tensorflow.python import debug as tf_debug
#将sess封装成具有tfdbg功能的Session
sess = tf_debug.LocalCLIDebugWrapperSession(sess)

接下来的事情就很简单,按照官方文档一步步操作熟悉命令即可。然后你会发现程序运行过程中出现Nan
值,其原因在于log(0). 就想办法使用下面的命令把0转化为一个较小的数即可==

diff = y_ * tf.log(tf.clip_by_value(y, 1e-8, 1.0))

tfgdb常用命令总结

tfgdb使用步进制的方法运行,其实和gdb,pdb很像,每调用一次run函数就会停止并输出当前的tensor节点的值,以方便我们进行观察和调试。在界面中可以直接使用鼠标点击界面上方的菜单栏进行命令的执行,比如选中一个节点后,点击list_inputs就会显示该节点的输入列表。下面总结一下常用的几个命令的含义:

run:运行一次sess.run()。-t可以运行很多次。-n运行结束。-f运行到filter条件出现,比如nan,inf等

这里写图片描述

list_inputs:打印节点的输入信息,简写为li。常用的包括-d和-r两个参数,分别用来限制显示的层数和方式。

这里写图片描述

list_outputs:打印节点的输出信息,简写为lo。后面常用的参数跟list_input一样。

这里写图片描述

list_tensors:展示所有的Tensor信息,简单可以理解为主界面,简写为lt。可以使用-f,-n,-t操作进行限制输出tensor所满足的条件。-s,-r用来控制显示信息排序或者倒序。

这里写图片描述

node_info:打印节点信息,简写为ni。

这里写图片描述

print_tensor:打印Tensor的值,简写为pt。

这里写图片描述

/ : 查找。譬如:/inf就是查找当前打印的值中的inf,并将其高亮显示。

此外还可以看一下官网上面给出的常用命令组合,如下图所示:
这里写图片描述

恩,就先介绍到这里。其实还是要多用才可以==

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值