tensorflow 代码调试工具tfdbg的用法

tensorflow 代码调试工具tfdbg的用法

在windows10下安装

使用tfdbg前确定安装好了tensorflow和pyrendline

终端输入

pip install pyreadline

如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mgsVoQQI-1573184362596)(C:\Users\xiahuadong\Pictures\博客\109.png)]
在Mac OS X 上使用,请安装 ncurses库

tfdbg的命令表

命令 说明 例子
lt 列出转储的张量 lt
列表转储的张量,其名称与给定的正则表达式模式匹配。 lt -n Softmax.*
具有与给定正则表达式模式匹配的操作类型的列表转储张量。 lt -t MatMul
只列出通过注册的张量过滤器的张量。 lt -f has_inf_or_nan
仅列出传递已注册的张量筛选器的张量,不包括名称与正则表达式匹配的节点。 lt -f has_inf_or_nan``-fenn .*Sqrt.*
按给定的“Sort_key”对输出进行排序,其可能值为“timestamp”(默认)、“dump_size”、“op_type”和“tensor_name”。 lt -s dump_size
按相反顺序排序。 lt -r -s dump_size
pt 打印转储张量的值
打印张量值。 pt hidden/Relu:0
使用[numpy](http://www.numpy.org/)样式的数组切片打印张量子数组。 pt hidden/Relu:0[0:50,:]
打印大张量的全部内容,不使用省略号。(对于大张量可能需要很长时间。) pt -a hidden/Relu:0[0:50,:]
突出显示属于指定数字范围的元素。多个范围可以一起使用。 pt hidden/Relu:0 -a -r [[-inf,-1],[1,inf]]
与指定的基于0的转储号对应的打印转储对于具有多个转储的张量是必需的。 pt -n 0 hidden/Relu:0
包括张量数值的摘要(仅适用于具有布尔和数值类型(如“int*”和“float*”)的非空张量。) pt -s hidden/Relu:0[0:50,:]
使用Numpy.save()将张量值(可能切片)写入Numpy文件 pt -s hidden/Relu:0 -w /tmp/relu.npy
@[coordinates] 导航到“pt”输出中的指定元素。 @[10,0] or @10,0
/regex 更少样式的给定正则表达式搜索。 /inf
/ 滚动到下一行与搜索的regex(如果有)匹配。 /
pf 在feed dict toSession.run中打印一个值
打印提要的值。还要注意,“pf”命令有-a-r-s标志(下面未列出),这些标志的语法和语义与“pt”的同名标志相同。 pf input_xs:0
eval 计算任意Python和numpy表达式
计算一个Python/numpy表达式,numpy可用作“np”,调试张量名称用倒引号括起来。 eval "np.matmul((output/Identity:0/Softmax:0).T,Softmax:0)"
完整打印大型评估结果,即不使用省略号。 eval -a 'np.sum(Softmax:0, axis=1)'
使用Numpy.save()将计算结果写入Numpy文件 eval -a 'np.sum(Softmax:0, axis=1)' -w /tmp/softmax_sum.npy
ni 显示节点信息
在输出中包含节点属性。 ni -a hidden/Relu
列出节点中可用的调试转储。 ni -d hidden/Relu
显示节点创建的Python堆栈跟踪。 ni -t hidden/Relu
li 列出节点的输入
递归地列出节点的输入(输入树) li -r hidden/Relu:0
在“-r”模式下限制递归深度。 li -r -d 3 hidden/Relu:0
包括控制输入。 li -c -r hidden/Relu:0
显示输入节点的操作类型。 li -t -r hidden/Relu:0
lo 列出节点的输出接收方
递归地列出节点的输出接收方(输出树) lo -r hidden/Relu:0
在“-r”模式下限制递归深度。 lo -r -d 3 hidden/Relu:0
通过控件边缘包括接收方。 lo -c -r hidden/Relu:0
显示接收方节点的操作类型。 lo -t -r hidden/Relu:0
ls 列出创建节点所涉及的Python源文件
将输出限制为与给定正则表达式路径模式匹配的源文件。 ls -p .*debug_mnist.*
将输出限制为与给定正则表达式模式匹配的节点名。 ls -n Softmax.*
ps 打印Python源文件
打印给定的Python源文件source.py,并用在每个源文件上创建的节点(如果有的话)注释行。 ps /path/to/source.py
对张量而不是默认节点执行注释。 ps -t /path/to/source.py
从给定行开始注释source.py。 ps -b 30 /path/to/source.py
限制每行批注中的元素数。 ps -m 100 /path/to/source.py
run 继续下一个会话。run() run
在下一个“Session.run”中执行,不进行调试,并在运行之后立即转到CLI。 run -n
执行“Session.run”T-1次,不进行调试,然后运行带调试。然后在调试运行后立即转到CLI。 run -t 10
继续执行“Session.run”,直到任何中间张量触发指定的张量筛选器(使筛选器返回“True”)。 run -f has_inf_or_nan
继续执行“Session.run”,直到节点名与正则表达式不匹配的任何中间张量触发指定的张量筛选器(使筛选器返回“True”)。 run -f has_inf_or_nan -fenn .*Sqrt.*
执行下一个“Session.run”,只监视名称与给定正则表达式模式匹配的节点。 run --node_name_filter Softmax.*
执行下一个“Session.run”,只监视操作类型与给定正则表达式模式匹配的节点。 run --op_type_filter Variable.*
执行下一个“Session.run”,只转储与给定正则表达式模式匹配的数据类型(dtypes)的张量。 run --tensor_dtype_filter int.*
在分析模式下执行下一个“Session.run”调用。 run -p
ri 显示有关当前运行的运行的信息,包括获取和馈送 ri
config 设置或显示永久TFDBG UI配置
设置配置项的值:{graph\u recursion\u depthmouse\u mode}。 config set graph_recursion_depth 3
显示当前的永久用户界面配置。 config show
version 打印TensorFlow的版本及其关键依赖项 version
help 打印常规帮助信息 help
打印给定命令的帮助。 help lt

举例

代码

import numpy as np
import tensorflow as tf
from tensorflow.python import debug as tf_debug
xs = np.linspace(-0.5, 0.49, 100)
x = tf.placeholder(tf.float32, shape=[None], name="x")
y = tf.placeholder(tf.float32, shape=[None], name="y")
k = tf.Variable([0.0], name="k")
y_hat = tf.multiply(k, x, name="y_hat")
sse = tf.reduce_sum((y - y_hat) * (y - y_hat), name="sse")
train_op = tf.train.GradientDescentOptimizer(learning_rate=0.02).minimize(sse)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
# ========================================================================
# 被调试器封装的会话(添加以下代码)
sess = tf_debug.LocalCLIDebugWrapperSession(sess, ui_type="readline")
#=========================================================================
for _ in range(10):
    sess.run(y_hat, feed_dict={x: xs, y: 10 * xs})
    sess.run(train_op, feed_dict={x: xs, y: 42 * xs})

下面是运行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BUxl6v6D-1573184362596)(C:\Users\xiahuadong\Pictures\博客\110.png)]

运行程序,终端输入代码:

tfdbg> run

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TXtOZ28j-1573184362596)(C:\Users\xiahuadong\Pictures\博客\111.png)]

打印张量,在终端输入代码:

tfdbg> pt y_hat:0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BuKpijS5-1573184362597)(C:\Users\xiahuadong\Pictures\博客\112.png)]

后面自己试试命令,就不做过多演示了

发布了132 篇原创文章 · 获赞 30 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_44493841/article/details/102970310