tensorflow学习笔记(四十三):使用 tfdbg 来 debug

tensorflow学习笔记(四十三):使用 tfdbg 来 debug

由于 tensorflow 在训练的时候是在后台运行的,所以使用 python 的 debug 工具来 debug tensorflow 的执行过程是不可行的,为此,官方提供了一款debug 工具,名为 tfdbg

有很多人觉得,为了 debug tensorflow 的计算过程又要学习一个新的工具,很烦。

但其实不然,tfdbg 用起来是十分简单的。以至于简单到我们只需要增加两行代码,就可以将之前的模型改成可 debug 的。

debug 界面,也只需熟悉几个常用的命令就可以了。

# 第一行: 引包
from tensorflow.python import debug as tf_debug

sess = tf.Session()
# 初始化的 sess 没必要加上 debug wrapper
sess.run(tf.global_variables_initializer())

# 第二行,给 session 加个 wrapper
debug_sess = tf_debug.LocalCLIDebugWrapperSession(sess=sess)
debug_sess.run(train_op) # 用 加了 wrapper 的 session,来代替之前的 session 做训练操作

好了,这样就可以了,然后命令行执行:

python demo_debug.py
# 或者
python -m demo_debug

不一会,下面界面就会出现,就可以开心的 debug

Tips : debug 界面中 带 下划线的 东西 都是可以用鼠标点一下,就会触发相应操作的

关于debug 界面的命令,官方文档有详细的说明 https://www.tensorflow.org/programmers_guide/debugger#debugging_model_training_with_tfdbg

核心的几个命令是:

  • run :执行一次 debug_session.run() , 这次执行产生中间 tensor 的值都可以通过 debug 界面查看
  • exit : 退出 debug

注意事项

  • debug 的 wrapper 要加在 执行 train_op 的 session 上,因为要 debug 的是 train 过程。但是如果是想 debug input-pipeline 的话,感觉是可以将 wrapper 加在 执行 input-pipeline 的 session 上的(没有测试过)。
  • 如果代码中使用了 input-pipeline 的话, debug 非常慢(不知道原因是啥)

参考资料

https://www.tensorflow.org/programmers_guide/debugger

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大内老A

如何通过VPC在本机搭建局域网

前几天在家里测试一个基于WS-AT的分布式应用,但是连接公司网络的VPN出现了问题,不得不采用VPC在本机搭建一个局域网。虽然以前也做过这样的尝试,可能是很久没...

1897
来自专栏iOS 开发杂谈

神器 iTools 的巧妙使用

这几天,公司项目不怎么忙,然后利用些业余的时间,想仿一个 app。下面介绍一下如果获取其他 app 的图片资源:

914

如何使用Midnight Commander,一个可视文件管理器

对于初学者来说,使用命令行工具来管理Linux服务器上的文件的方式可能是令人生畏的,耗时的,有时甚至是会带来风险的。而资深使用者会希望切换到更合适的工具来处理不...

1365
来自专栏CLEAN_CODER

Ruby on Rails 初次冲浪体验

Rails是一个用Ruby编写的Web应用开发框架。它的设计目标是通过预先提供开发人员最开始需要的基础设施,从而让Web应用开发更加容易。它可以让你写更少的代码...

1194
来自专栏salesforce零基础学习

salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载

目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少。上个月末跳槽去了新公司,主要做的就是salesforce,不过当时想要看一些相关资...

38910
来自专栏编程理解

PyGraphviz 安装使用

PyGraphviz 对于图、点和边的设置,如颜色、样式、形状等属性,分别提供有 graph_attr、node_attr 和 edge_attr 属性设置函...

751
来自专栏有趣的django

Django+Bootstrap+Mysql 搭建个人博客(一)

3610
来自专栏GopherCoder

Python 强化训练:第十篇

1323
来自专栏ml

c/c++----网站及其后门(CGI应用程序)

      C/C++学习到这儿,结合自己曾经学过的javasweb知识,现在让我们来看看,如何做一个CGI程序吧!       首先了解一下啥子叫CGI  :...

3034
来自专栏以南小隐-数通那些事儿

EVE-NG-PRO导入IOL镜像《EVE-NG系列教程三》

4762

扫码关注云+社区