一项名为“AutoGraph”的TensorFlow新功能.doc

上传人:白大夫 文档编号:3365010 上传时间:2019-08-18 格式:DOC 页数:4 大小:21KB
返回 下载 相关 举报
一项名为“AutoGraph”的TensorFlow新功能.doc_第1页
第1页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《一项名为“AutoGraph”的TensorFlow新功能.doc》由会员分享,可在线阅读,更多相关《一项名为“AutoGraph”的TensorFlow新功能.doc(4页珍藏版)》请在三一文库上搜索。

1、一项名为“AutoGraph”的TensorFlow新功能今天,我们将介绍一项名为 “AutoGraph” 的 TensorFlow 新功能。AutoGraph 可以将 Python 代码(包括控制流、print() 和其他 Python 原生功能)转换为纯 TensorFlow 图代码。要在不使用即时执行的情况下编写 TensorFlow 代码,您需要进行一些元编程,即编写一个用于创建图的程序,然后再执行该图。这种方式可能会令人困惑,特别是对于新开发者而言。一些特别棘手的情况涉及更复杂的模型,例如使用 if 和 while 的模型,或者具有 print() 等副作用或接受结构化输入的模型。那

2、么,我们为什么需要图呢?图允许各种优化,如移除常见的子表达式和融合内核。此外,由于图形成了一种独立于平台的计算模型,可简化分布式训练和针对各种环境的部署。这对于多个 GPU 或 TPU 上的分布式训练或者通过TensorFlow Lite在移动或物联网等其他平台上分发模型尤为重要。下面这个简单示例显示了您可能要添加到图的运算:1def huber_loss(a): 2if tf.abs(a) tils.run_cond(tf.less_equal(tf.abs(a), delta), if_true,14if_false) 15 return loss然后,您可以将这些代码视为 TensorF

3、low 运算进行调用:1with tf.Graph().as_default(): 2x_tensor = tf.constant(9.0) 34# The converted function works like a regular op: tensors in, tensors out. 5huber_loss_tensor = huber_loss(x_tensor) 67with tf.Session() as sess: 8print(TensorFlow result: %2.2fn % sess.run(huber_loss_tensor) 如您所见,AutoGraph 填补了

4、即时执行与图之间的差距。AutoGraph 接收即时风格的 Python 代码并将其转换为生成图的代码。AutoGraph 不仅仅是一组有用的宏,它还使用源代码转换来允许替换 Python 语言的任意部分,包括控制流、函数应用和赋值、生成模板代码,以及重构惯用 Python 以便轻松转换成图。使用任何编译器,都会对错误消息的可读性产生担忧;为此,AutoGraph 设置为创建错误消息和堆叠追踪,以显示原始源代码中的错误源,而不是仅显示对生成代码的引用。可运行示例那么,AutoGraph 可以为我们做什么呢?以下是一些代码示例,现在可以直接转换为图代码而无需任何更改。如果您想实际运行所有这些操作

5、,我们提供了一个笔记本,您可以在Colab中打开或在GitHub中查看。注:GitHub 链接https:/github/tensorflow/models/blob/master/samples/core/guide/autograph.ipynb接下来,我们使用循环和分支来检查Collatz 猜想。请注意,出于多样性考虑,我们将不使用装饰器,而使用 AutoGraph 的 .to_graph() 函数将其转换为图。1def collatz(a): 2counter = 0 3while a != 1: 4if a % 2 = 0: 5a = a / 2 6else: 7a = 3 * a

6、+ 1 8counter = counter + 1 9return counter1011graph_mode_collatz = autograph.to_graph(collatz) 12# The code is human-readable, too 13print(autograph.to_code(collatz) 1415collatz_tensor = graph_mode_collatz(tf.constant(n) AutoGraph 可以支持任意的嵌套控制流,例如:1def f(n): 2if n = 0: 3while n CPU 控制器管理训练的情况下,这样做十分有

7、用。注:笔记本链接https:/colab.research.google/github/tensorflow/models/blob/master/samples/core/guide/autograph.ipynb#scrollTo=4LfnJjm0Bm0BAutoGraph 开启了构建和训练模型的新思路。我们期待根据开发者社区的建议为 AutoGraph 添加更多功能,因此欢迎您提交问题并给出建议!图性能与即时执行即时执行非常简单易用,但图的速度通常要更快。虽然二者的比较基准较为复杂(并且取决于应用和硬件配置),但在这个简单的示例中,我们可以看到,从即时切换到大量使用 if 和 whil

8、e 的 AutoGraph 代码时,速度有了显著提升。最终,AutoGraph 允许您在加速器硬件(如 GPU 和Cloud TPU)上使用动态和流控制较多的模型,这在基于大量数据训练大型模型时十分必要。我们刚刚开始着手分析性能。如果您发现某个图语句的运行速度低于预期,请提交问题!AutoGraph 和即时执行虽然使用即时执行时,您仍然可以通过tf.contrib.eager.defun对部分代码使用图执行,但这要求您使用 tf.cond() 等 TensorFlow 图运算。将来,AutoGraph 将与 defun 无缝集成,允许用简单的即时式 Python 语言编写图代码。实现此功能后,您可以通过选择性地将即时代码转换为图片段来使用 AutoGraph 加速热点。结论AutoGraph 是一款新工具,可帮您轻松构建能够在 TensorFlow 图中轻松运行的直观、复杂的模型。此工具目前为 contrib 中的实验性工具,但我们希望尽快将它加入到核心 TensorFlow 中。跟我们分享您的 AutoGraph 使用体验!如果您有任何反馈、建议或想法,请提交问题并向TensorFlow 开发者群组发送消息。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1