TensorFlow 基础:TensorFlow Debug

╰半夏微凉° 2022-02-18 12:27 470阅读 0赞

TensorFlow 调试器(TFDebug)

TensorFlow 调试器(tfdbg) 是专门为TensorFlow定制的调试器。
在训练或推理的过程中能够让你看到流图的内部结构及状态,由于tensorflow的计算图,使用通常的调试器(如pdb)是看不到的。

TFDebug使用

用TFDebug包装tensorflow会话(session)需要增加如下的代码:

  1. # 第一行: 引包
  2. from tensorflow.python import debug as tf_debug
  3. sess = tf.Session()
  4. # 初始化的 sess 没必要加上 debug wrapper
  5. sess.run(tf.global_variables_initializer())
  6. # 第二行,给 session 加个 wrapper
  7. debug_sess = tf_debug.LocalCLIDebugWrapperSession(sess=sess)
  8. debug_sess.run(train_op) # 用 加了 wrapper 的 session,来代替之前的 session 做训练操作

我直接把当前session变成了debug session

  1. self.sess = tf_debug.LocalCLIDebugWrapperSession(self.sess)

用tf_debug.LocalCLIDebugWrapperSession重新包装一下sess,这个包装器提供如下特性;
(1) 在Session.run()之前引进CLI命令行调试接口,能够让你控制程序的执行和监视图的内部状态。
(2) 允许你自己定义特殊的filters 来监视某个tensor(张量)的值,可以帮助诊断bug。

核心的几个命令是:

  1. run :执行一次 debug_session.run() , 这次执行产生中间 tensor 的值都可以通过 debug 界面查看
  2. exit 退出 debug

注意事项

debug 的 wrapper 要加在 执行 train_op 的 session 上,因为要 debug 的是 train 过程。
但是如果是想 debug input-pipeline 的话,感觉是可以将 wrapper 加在 执行 input-pipeline 的 session 上的(没有测试过)。
如果代码中使用了 input-pipeline 的话, debug 非常慢(不知道原因是啥)

参考资料

https://www.tensorflow.org/programmers_guide/debugger

发表评论

表情:
评论列表 (有 0 条评论,470人围观)

还没有评论,来说两句吧...

相关阅读

    相关 TensorFlow基础

    深度学习在模式识别方向,尤其是在图像、声音、语音、语言和时间序列数据上表现出色。运用深度学习,你可以对数据进行分类、预测、聚类以及特征提取。2015年11月,谷歌发布了Tens

    相关 TensorFlow基础概念

    首先祝自己生日快乐!! 趁着大学最后的一点时间学习一点新的东西,希望自己能坚持下去。 这里记录一点这几天学习中记录下的一些概念以及注意点。 基础概念 计算图(g

    相关 Tensorflow基础

    一、基础概念 TensorFlow是一种采用数据流图(data flow graphs),用于数值计算的开源软件库。其中 Tensor 代表传递的数据为张量(多维数组),