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

posted on 2021-08-12 16:51  一杯明月  阅读(320)  评论(0编辑  收藏  举报