专栏首页量子位TensorFlow推出命令式、可定义的运行接口Eager Execution

TensorFlow推出命令式、可定义的运行接口Eager Execution

安妮 编译自 Google Research Blog 量子位 出品 | 公众号 QbitAI

今天凌晨,谷歌宣布推出TensorFlow的eager execution。这是一个命令式的、可定义的运行接口,它们由Python调用,可用来立即执行操作。

简单来说,eager execution有四大优势:

  • 立即快速调试运行错误并与Python工具集成
  • 支持用易用Python控制流的动态模型
  • 支持自定义和高阶梯度
  • 几乎所有TensorFlow操作均可用

我们可以通过一些代码更好理解eager execution,这是很技术的问题,熟悉TensorFlow将帮你更好理解。

使用eager execution

当启用eager execution时,操作将立即执行并将值返回给Python,无需调用session.run()。例如,把两个矩阵相乘,写出来是这样的:

用print或Python调试程序检查中间结果也很简单:

此外,还可以用Python flow控制构建动态模型。这是考拉兹猜想(Collatz conjecture)的一个例子,用到了TensorFlow中算术运算:

在这种情况下,用tf.constant(12)张量对象(即代码中的Tensor对象)将把所有数学运算推广到张量运算,并且所有返回值都是张量。

编写代码新变化

使用eager execution应该对当前TensorFlow用户来说更直观了。原因有多种,比如里面只有少数eager-specific API,并且大多数现有API和操作都支持eager。值得注意的还有以下几点:

  • 如果你还没用过tf.data做输入处理,应该着手学习一下了。它更容易使用,并且通常处理速度更快。

tf.data介绍

https://developers.googleblog.com/2017/09/introducing-tensorflow-datasets.html

  • 在使用如tf.layer.Conv2D()或Keras等面向对象的层时,它们可以显式存储变量。
  • 对大多数模型来说,你可以编写代码让它作用于eager execution和构建计算图。也有例外情况,比如用Python控制流根据输入改变计算。
  • 一旦调用了tfe.enable_eager_execution(),就无法关闭。如要获取计算图行为,需要启动新的Python会话。

参考资料及下载

谷歌研究博客地址:

https://research.googleblog.com/2017/10/eager-execution-imperative-define-by.html

GitHub代码地址:

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/eager/README.md

代码使用手册:

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/eager/python/g3doc/guide.md

祝你玩得开心~

本文分享自微信公众号 - 量子位(QbitAI),作者:专注报道AI

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • P视频像P图一样简单,Adobe后期软件AE新功能上线

    这些魔法般的视频改造,都由P图大厂阿逗比(Adobe)出品的后期软件AE(After Effects)自动完成。刚刚加入的内容识别填充(content-awar...

    量子位
  • 七年终登Science封面:最强大脑皮层神经网络重建,揭示迄今哺乳动物最大神经线路图

    最新Science杂志封面,发布了知名的德国马克斯·普朗克脑研究所的最新脑科学成果:

    量子位
  • Apollo 11登月代码成Github热度第一:14.5万行,获星3.3万

    50年后,Apollo 11的源代码在GitHub成为趋势热榜第一,获星获赞3.3万。

    量子位
  • 解决python 缺少 'python.

    greenlet.h:8:20: 致命错误: Python.h:没有那个文件或目录

    py3study
  • 线程同步(四)—— 信号

    Aichen
  • react hooks api

    hooks API是 React 16.8的"新增"功能(16.8更新于2年前)。官网是这么说的:

    一粒小麦
  • 让AR融入了中小学课本,同济大学研发出了“魔法课本”

    镁客网
  • Akka 指南 之「集群单例」

    为了使用集群单例(Cluster Singleton),你必须在项目中添加如下依赖:

    CG国斌
  • C++经典算法题-4N魔方阵

    与奇数魔术方阵 相同,在于求各行、各列与各对角线的和相等,而这次方阵的维度是4的倍数。

    cwl_java
  • 深入理解JVM(③)虚拟机的类加载过程

    上一篇我们介绍到一个类的生命周期大概分7个阶段:加载、验证、准备、解析、初始化、使用、卸载。并且也介绍了类的加载时机,下面我们将介绍一下虚拟机中类的加载的全过程...

    纪莫

扫码关注云+社区

领取腾讯云代金券