使用tf的debugger调试十分简单,总分为以下几个流程:#
1. import tensorflow的调试模块
fromf tensorflow.python import debug as tfdbg
2. 用调试模块的会话对象包装原有的Session对象:
withw tf.Session(config=config) as sess:
sess = tfdbg.LocalCLIDebugWrapperSession(sess)
3. 加入异常值对应的过滤器(可以自定义过滤器)
sess.add_tensor_filter("has_inf_or_nan", tfdbg.has_nan_or_inf)
4. 运行代码,并在带过滤器的情况下运行
r -f has_inf_or_nan
5. 跟踪异常值产生的节点,并找到异常值来源在源码中的位置(这个较灵活,有些可能需要回溯几个节点,有些直接可查)
nin -t Discrim/add_2
6. 退出debugger
nin -t Discrim/add_2
如何在实例中调用tfdbg(以mnist为例):
1. 其他地方都不需要改动,只需要使用调试模块来包装sess对象:
2. 添加需要用到的异常值所对应的过滤器
3. 然后在命令行
中输入以下代码:
4. 等待片刻即可进入tensorflow的debugger模式:
5. 输入命令run即可得到所有变量
6. 输入命令run -f has_inf_or_nan
即可得到所有值为inf或nan的变量
7. 输出命令 例如:pt conv2d_1/random_uniform/shape:0
即可得到conv2d_1/random_uniform/shape:0的值
tfdbg CLI常用命令:
详情请见:http://cwiki.apachecn.org/pages/viewpage.action?pageId=10029501