如何简单调试tensorflow Python

调试tensorflow Python

1.只要2句话,或者3句话

from tensorflow.python import debug as tfdbg #调试步骤a
sess = tfdbg.LocalCLIDebugWrapperSession(sess)#调试步骤b
sess.add_tensor_filter("has_inf_or_nan", tfdbg.has_inf_or_nan)#调试步骤c 命令就是run  ,命令有ni 有输入和输出到下一个哪个结点
# https://www.cnblogs.com/hellcat/articles/7812119.html 调试教程

2.简单的测试程序,与上一篇博客代码一致。说明如何运行到断点(或者运行几次就停下来还不知道)(找到了,直接用 help run 查看命令了,运行几次可以是run -t 2)(但是跑到哪个结点停下,没找到,只知道要filter过滤器注册,然后还发现了,传入的参数是一个函数)

from tensorflow.python import debug as tfdbg #调试步骤a
import tensorflow as tf
import numpy as np

a=np.array([[1,1,0,1],[0,0,0,0]])
b=a.reshape(2,2,2,1)
#b=a.reshape(2,2,1,2)#input batch为2,通道为1时 ,输出果然是2*3*3*2
filter=tf.Variable(b,dtype=tf.float32,name='filter')


a1=np.arange(32)
b1=a1.reshape(1,4,4,2)
#b1=a1.reshape(2,4,4,1) #batch为2
input=tf.Variable(b1,dtype=tf.float32,name='input')  #还要加个float32
op = tf.nn.conv2d(input, filter, strides=[1, 1, 1, 1],padding='VALID',name='op')
sess=tf.Session()
sess = tfdbg.LocalCLIDebugWrapperSession(sess)#调试步骤b
sess.add_tensor_filter("has_inf_or_nan", tfdbg.has_inf_or_nan)#后面是一个函数
sess.run(tf.global_variables_initializer())
#sess.add_tensor_filter("has_inf_or_nan", tfdbg.has_inf_or_nan)#调试步骤c 命令就是run  ,命令有ni 有输入和输出到下一个哪个结点
# https://www.cnblogs.com/hellcat/articles/7812119.html 调试教程
bb=(sess.run(op))
#cc=bb.reshape(2,3,3)
#dd=bb.reshape(3,3,2)
ee=sess.run(tf.squeeze(op,name='ee'))
print(bb.size)

3.在调试的时候,似乎只能用命令行,不能通过类似pycharm的IDE的run和debug按钮

4.在命令行输入python test.py,出现:
这里写图片描述

然后输入run ,出现:
这里写图片描述

这样你就可以用鼠标来点击了。根据观察发现,这一次的run,运行到代码一部分(并不是第一次sess.run的所以前面)猜测,可能是图中的第一个结点的前面,这个代码的第一个结点应该是函数conv2d ,因为这样才有输出输入,用ni +tensor name 来查看变量信息
recipient表示接下来输入到哪个结点。之后就可以继续run了

猜你喜欢

转载自blog.csdn.net/snailyww/article/details/79163699