TensorFlow 基础:TensorFlow Debug

TensorFlow 调试器(TFDebug)

TensorFlow 调试器(tfdbg) 是专门为TensorFlow定制的调试器。
在训练或推理的过程中能够让你看到流图的内部结构及状态,由于tensorflow的计算图,使用通常的调试器(如pdb)是看不到的。

TFDebug使用

用TFDebug包装tensorflow会话(session)需要增加如下的代码:

# 第一行: 引包
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 做训练操作

我直接把当前session变成了debug session

self.sess = tf_debug.LocalCLIDebugWrapperSession(self.sess)

用tf_debug.LocalCLIDebugWrapperSession重新包装一下sess,这个包装器提供如下特性;
(1) 在Session.run()之前引进CLI命令行调试接口,能够让你控制程序的执行和监视图的内部状态。
(2) 允许你自己定义特殊的filters 来监视某个tensor(张量)的值,可以帮助诊断bug。

核心的几个命令是:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值