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() 。例如 , 把两个矩阵相乘 , 写出来是这样的:

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

文章插图
用print或Python调试程序检查中间结果也很简单:
TensorFlow推出命令式、可定义的运行接口Eager Execution

文章插图
【TensorFlow推出命令式、可定义的运行接口Eager Execution】此外 , 还可以用Python flow控制构建动态模型 。这是考拉兹猜想(Collatz conjecture)的一个例子 , 用到了TensorFlow中算术运算:
TensorFlow推出命令式、可定义的运行接口Eager Execution

文章插图
在这种情况下 , 用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
祝你玩得开心~
—完
加入社群
量子位AI社群10群开始招募啦 , 欢迎对AI感兴趣的同学 , 加小助手微信qbitbot4入群;
此外 , 量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募 , 面向正在从事相关领域的工程师及研究人员 。
进群请加小助手微信号qbitbot4 , 并务必备注相应群的关键词~通过审核后我们将邀请进群 。(专业群审核较严 , 敬请谅解)
诚挚招聘
量子位正在招募编辑/采访人员 , 工作地点在北京中关村 。期待有才气、有热情的同学加入我们!相关细节 , 请在量子位公众号(QbitAI)对话界面 , 回复“招聘”两个字 。
量子位QbitAI
''追踪AI技术和产品新动态
Tags:


    推荐阅读