tensorflow调试,使用官方tfdbg对tensorflow调试
2021.11.17更新:
https://www.cnblogs.com/hellcat/articles/7812119.html
之前:
使用官方的tfdbg进行调试,使用的方式很简单三句话完成:
第一句声明:
from tensorflow.python import debug as tf_debug
第二句:对会话封装
sess = tf_debug.LocalCLIDebugWrapperSession(sess)
第三句:过滤(可选)
sess.add_tensor_filter(“has_inf_or_nan”, tf_debug.has_inf_or_nan)
如此以来,每次只要调用该会话的run()属性,就会进入debug.
你最好把这个代码存成.py,然后在终端执行。
具体的做法是:
1 def train(self, dataset): 2 log_out('****EPOCH {}****'.format(self.training_epoch), self.Log_file) 3 self.sess.run(dataset.train_init_op) 4 while self.training_epoch < self.config.max_epoch: 5 t_start = time.time() 6 try: 7 ops = [self.train_op, 8 self.extra_update_ops, 9 self.merged, 10 self.loss, 11 self.logits, 12 self.labels, 13 self.accuracy] 14 15 debug_sess = tf_debug.LocalCLIDebugWrapperSession(self.sess) 16 debug_sess.run(ops) 17 18 _, _, summary, l_out, probs, labels, acc = self.sess.run(ops, {self.is_training: True}) 19
在第18句之前加上15、16两句。然后
1.打开训练文件所在的文件夹,打开终端;
2.在终端打开conda环境;
3.用python运行训练文件。
(Randlanetpy36) dell@dell-Precision-5820-Tower:/media/dell/D/qcc/RandLA-Net_ceshi_wujiaochang$ python main_SemanticKITTI_wujiaochang.py
会出现如下的画面:
然后输入s进行单步调试。
单步执行的话就用鼠标点击上面的“invoke stepper”,单步执行。如果不知道怎么进行单步执行,那么就输入命令“help”自己去看文档就是啦!单步就是按”s”,估计就是step的意思。
核心的几个命令是:
- run :执行一次 debug_session.run() , 这次执行产生中间 tensor 的值都可以通过 debug 界面查看
- exit : 退出 debug
当执行单步调试的时候,每执行一步单步调试,箭头都会下移一行,此时箭头所指向的变量的值会在下面显示。
参考1:https://blog.csdn.net/lucky7213/article/details/78975861
参考2:https://blog.codescv.com/debug-tf-using-tfdbg.html
参考3:https://tensorflow.juejin.im/programmers_guide/debugger.html