专栏首页漫漫深度学习路tensorflow学习笔记(四十三):使用 tfdbg 来 debug

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 条评论
登录 后参与评论

相关文章

  • pytorch: 如何优雅的将 int list 转成 one-hot形式

    虽然 pytorch 已经升级到 0.2.0 了,但是,貌似依旧没有简单的 api 来帮助我们快速将 int list 转成 one-hot。那么,如何优雅的实...

    ke1th
  • tensorflow学习笔记(十三):conv3d

    这是官方给的解释,还不如conv2d解释的详细呢,至少在介绍conv2d的时候还给了公式. 和conv2d对比一下:

    ke1th
  • pytorch学习笔记(三):自动求导

    auto gradient 本片博文主要是对http://pytorch.org/docs/notes/autograd.html的部分翻译以及自己的理解,如有...

    ke1th
  • SAP ABAP常用DEBUG调试代码的八种方式

    1. 直接在程序中设断点 在se38里面打上breakpoint,程序运行到该处即进入debug模式

    matinal
  • 【技巧】Java工程中的Debug信息分级输出接口及部署模式

    UPDATE: 2018.4.4 笔者将考虑将这一模块封装成一个完整的java第三方包并可能进行开源放送,完成后将会再次发布最新消息,敬请期待。 -------...

    HansBug
  • 一个简单实用的Android调试应用技巧

    在应用开发中,我们常常会进行日志打印或者debug调试,以此来分析运行时的一些信息,便于发现bug和问题。Android Studio的Debug功能很好用,但...

    技术小黑屋
  • 二进制安装k8s集群(17)-安装kubectl-debug

    在上一篇文章里我们主要介绍安装k8s集群内的基础服务nginx-ingress-controller,这里我们介绍一下k8s的pod调试工具。在k8s的容器环境...

    TA码字
  • 编程能力突飞猛进的奥秘!戳~

    为什么写这篇博客? 因为我刚买了新键盘,迫不及待想体验下打字6的飞起的感觉,嗯,新键盘还不错。前几天看到在知乎上看到一个问题:

    用户1081422
  • Mybatis 敏捷开发之快速查看目标执行SQL

    基于网络抓包,监听数据库执行SQL 实时展示 . 使用非常简单,下载安装包,指定监听网卡、数据库类型即可

    冷冷
  • Nodejs进阶:用debug模块打印调试日志

    在node程序开发中时,经常需要打印调试日志。用的比较多的是debug模块,比如express框架中就用到了。下文简单举几个例子进行说明。文中相关代码示例,可在...

    IMWeb前端团队

扫码关注云+社区

领取腾讯云代金券