掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

TensorFlow调试程序介绍

我们怀着激动的心情与大家分享 TensorFlow 调试程序 (tfdbg),这个工具可以简化 TensorFlow 中对机器学习 (ML) 模型的调试。

TensorFlow 是 Google 的开源 ML 内容库,基于数据流图表。一个典型的 TensorFlow ML 程序包括两个独立的阶段:

  1. 利用内容库的 Python API 将 ML 模型设置为数据流图表;
  2. 利用 Session.run() 方法在图表上训练或执行推理。

如果在第二阶段(即 TensorFlow 运行时)出现错误和缺陷,将难以进行调试。

要了解出现这种情况的原因,请注意对标准 Python 调试程序而言,Session.run() 调用实际上是单个语句,它并不会公开运行中图表的内部结构(节点及其连接)和状态(节点的输出数组 或 张量)。gdb 等较低级别的调试程序在组织堆叠框架和变量值时无法令其与 TensorFlow 图表操作产生关联。专业级运行时调试程序是 TensorFlow 用户最常提出的功能请求之一。

tfdbg 满足了这一运行时调试需求。让我们通过一段简短的代码来了解 tfdbg 的实用效果,这段代码的作用是建立并运行一个简单的 TensorFlow 图表,以通过梯度下降法拟合一个简单的线性方程。

import numpy as np
import tensorflow as tf
import tensorflow.python.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)
for _ in range(10):
  sess.run(train_op, feed_dict={x: xs, y: 42 * xs})

正如本例中突出显示的线条所示,会话对象包装成一个用于调试的类 (LocalCLIDebugWrapperSession),因此调用 run() 方法会启动 tfdbg 的命令行界面 (CLI)。您可以利用鼠标点击或命令执行一遍连续运行调用,检查图表的节点及其属性,通过中间张量列表将图表中所有相关节点完整的执行历史记录可视化。通过使用 invoke_stepper命令,您可以让 Session.run() 调用在“步进器模式”下执行,在这种模式下,您可以步进到自己选择的节点,观察并修改其输出,然后再执行进一步的分步调试,其运行方式与调试过程语言(例如 gdb 或 pdb)类似。

在开发 TensorFlow ML 模型时一类经常遇到的问题是,因溢出、除零、log(0) 等错误而导致出现无效数值(无穷大和 NaN)。在大型 TensorFlow 图表中,查找此类节点的根源可能既繁琐又耗时。借助于 tfdbg CLI 及其条件断点支持,您可以快速找到引发问题的根源节点。下面这段视频演示了如何利用 tfdbg 调试神经网络中存在的无穷大/NaN 问题:https://www.youtube.com/watch?time_continue=1&v=CA7fjRfduOI

TensorFlow 调试程序实用效果抓屏,摘自此教程

打印选项等替代性调试选项相比,tfdbg 需要改动的代码行数更少,提供的图表覆盖范围更大,并且提供的调试体验交互性更强。它可以加快您的模型开发速度和调试工作流执行速度。它还提供了其他功能,例如离线调试从服务器环境转储的张量并将其与 tf.contrib.learn 集成。首先,请访问此文档。这篇研究论文对 tfdbg 的设计做了更详尽的展示。

使用 tfdbg 时要求安装的最低 TensorFlow 版本为 0.12.1。要报告错误,请在 TensorFlow 的 GitHub 问题页面上设立问题。如需获得一般使用帮助,请在 StackOverflow 上使用 tensorflow 标记发帖提问。

致谢如果没有 Google TensorFlow 核心/API 团队和应用机器智能团队提供的帮助和反馈,就不可能有这个项目。

0.gif

原文来自:谷歌开发者

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

  • 个人/企业涉诉查询

    通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。

    通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。

  • IP反查域名

    IP反查域名是通过IP查询相关联的域名信息的功能,它提供IP地址历史上绑定过的域名信息。

    IP反查域名是通过IP查询相关联的域名信息的功能,它提供IP地址历史上绑定过的域名信息。

  • 人脸卫士

    结合权威身份认证的精准人脸风险查询服务,提升人脸应用及身份认证生态的安全性。人脸风险情报库,覆盖范围广、准确性高,数据权威可靠。

    结合权威身份认证的精准人脸风险查询服务,提升人脸应用及身份认证生态的安全性。人脸风险情报库,覆盖范围广、准确性高,数据权威可靠。

  • 全国城市空气质量

    全国城市和站点空气质量查询,污染物浓度及空气质量分指数、空气质量指数、首要污染物及空气质量级别、健康指引及建议采取的措施等。

    全国城市和站点空气质量查询,污染物浓度及空气质量分指数、空气质量指数、首要污染物及空气质量级别、健康指引及建议采取的措施等。

  • 手机号防骚扰黑名单

    输入手机号和拦截等级,查看是否是风险号码

    输入手机号和拦截等级,查看是否是风险号码

0512-88869195
数 据 驱 动 未 来
Data Drives The Future