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

相关文章

来自专栏KaliArch

Python实现端口检测

在平时工作中有遇到端口检测,查看服务端特定端口是否对外开放,常用nmap,tcping,telnet等,同时也可以利用站长工具等web扫描端口等。

1743
来自专栏北京马哥教育

shell 中 "2>&1" 的研究(你以为你会了,其实你根本就不会)

前言 周五晚上,shuker,hades,我还有几位同事,我们一起加班到两点多,最后hades 在crontab 里添加了一个定时任务。 这本来没什么好说的...

3006
来自专栏Java Edge

GET和POST到底啥区别???

最普遍的答案 我一直就觉得GET和POST没有什么除了语义之外的区别,自打我开始学习Web编程开始就是这么理解的。 可能很多人都已经猜到了,他要的答案是:

872
来自专栏vue学习

6.vue-router之命名路由和命名视图

① 官方文档的解释:https://router.vuejs.org/zh/guide/essentials/named-routes.html 就是在rou...

691
来自专栏木子昭的博客

百度贴吧 | 通用抓图脚本搞专业爬虫的话,先保证网速够好,再考虑多进程还是多线程~

多进程优势:单个进程的崩溃,不会影响其它进程 随之而来的问题是,进程之间,资源不共享,信息不共享,所以进程通讯的问题,是实现多进程协作,必须解决的问题 ...

34012
来自专栏MYSQL轻松学

MySQL binlog日志大小超过限定范围

my.cnf中有两个参数设置: expire_logs_days = 7 #binlog保留时间7天 max_binlog_size = 1G ...

38311
来自专栏IMWeb前端团队

微型UI库Riot介绍

本文作者:IMWeb 黄龙 原文出处:IMWeb社区 未经同意,禁止转载 定义 Riot:类似 React 的微型 UI 库 特点: 自定义标签 快速...

1789
来自专栏社区的朋友们

运维利器之万能的 strace

strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。strace...

3170
来自专栏FreeBuf

基于unicorn-engine的虚拟机的实现(WxSpectre)

反病毒虚拟机是一个很有优势的工具,可以说反病毒软件是否存在模拟器是衡量反病毒软件能力的一个指标。反病毒虚拟机不光是内嵌在反病毒软件内部,来动态执行样本。这种虚拟...

3497
来自专栏北京马哥教育

解决Redis 延迟故障

症状 前一段时间redis客户端在使用php connect 连接redis 的经常报一个redis server went away 等信息。 排查 首先想到...

2848

扫码关注云+社区