Tensorflow Eager Execution入门指南

【导读】本文介绍了最新版的Tensorflow 1.7的功能及其使用方法,重点介绍其中最有趣的功能之一eager_execution,它许用户在不创建静态图的情况下运行tensorflow代码。本文给出了使用eager_execution的步骤及一些注意事项,并不涉及理论知识,如果您已经对Tensorflow有所了解,那么可以阅读以下本文,它能指导您使用这个有趣的功能。

作者 | Keshav Aggarwal

编译 | 专知

参与 | Yingying, Hujun

专知在以前就推出过TensorFlow 1.4 Eager Execution系列教程,欢迎查看。

关于Tensorflow Eager Execution的简要指南 – 走进数据科学

谷歌刚刚在Tensorflow Dev Summit 2018上推出了最新版本的Tensorflow,即Tensorflow 1.7。您可以在文章最后找到链接查看新版本所发生的改变。另外要观看完整Dev Summit(开发峰会),请访问这里相关链接(文末给出)。

以下是TF 1.7的主要亮点:

使用Eager Execution,你可以在没有session的情况下运行你的代码。

使用您自己的functions轻松解决梯度计算。

支持将数据库里的数据读成用于实验的数据集。

对TensorRT的初始支持,以便您可以优化您的模型。

最有趣的功能之一是eager_execution,允许用户在不创建图形的情况下运行tensorflow代码。 让我们尝试一个简单的程序:

注意输出是一个张量而不是实际的数组本身。为了得到数组值,你需要在session中运行它。正如您所知道的,创建大型神经网络时,您无法使用打印查看操作的输出,从而增加了调试的复杂性。要检查操作的输出,您需要运行session并检查session内的输出:

现在让我们换种方式再试一次:

现在通过使用tf.enable_eager_execution()可以获得实际值。在eager_execution中,操作的输出将是实际值而不是张量。

但tf.enable_eager_execution的使用并不那么简单。 看看下一个例子。 下面是一段变量声明:

所以声明一个Tensorflow变量会引发一个错误,应该使用tf.contrib.eager.Variable。 这意味着我们不能在已有程序中使用eager execution,并希望它能够工作。为了使用eager实现功能,您需要更改您的代码。

其中一个变化是,您可以使用tensorflow数据API来代替使用占位符和变量将数据提供给模型。 这通常更快,更易于管理。 以下是一个函数,它可根据平整化的图像,标签和批量大小(flattened images, labels and batch_size)来生成数据集。

现在让我们试试这个函数。 我们得到下面的结果。 我们可以使用迭代器访问数据集中的数据来进行批处理。

我们使用GradientTape记录所有操作以便稍后应用于梯度更新。

grad()函数返回关于权重和偏差的损失的导数。然后将此传递给optimizer.apply_gradients()完成梯度下降的过程。

除了上述变化外,几乎所有东西都保持不变。 在使用eager execution之前,以下是一些关键点:

1、 数据必须使用tensorcow.data.Dataset进行初始化。 (也可以使用其他方式,但不建议使用)

2、 eager execution默认在CPU上运行,要使用GPU,需要包含以下代码:with tf.device('/ gpu:0')

3、 eager execution不会创建张量图,要构建图只需要删除tf.enable_eager_execution()即可

4、 eager execution对开发(R&D)有好处,但在生产环境中你应该使用graph execution。

5、 您可以保存通过eager execution生成的模型,然后以graph 或eager execution的形式加载该模型。

以下是Google Colaboratory上的工作代码链接,您可以尝试使用该代码。、

https://drive.google.com/file/d/1EEiYUfE63S2IaADXwGT40nH5Ip2iri2-/view?usp=sharing

参考:

https://github.com/tensorflow/tensorflow/releases/tag/v1.7.0

https://www.youtube.com/watch?v=gplTc2F5Wvk

参考链接:

https://towardsdatascience.com/eager-execution-tensorflow-8042128ca7be

-END-

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2018-04-16

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

手把手教你用 1 行命令实现人脸识别

? 人脸识别很难吗? -- Kangvcar 本文导航 ◈ 环境要求00% ◈ 环境搭建03% ◈ 实现人脸识别19% ◈ 示例一(1 行命令实现人脸识别):...

3636
来自专栏量化投资与机器学习

机器学习应用区块链系列(一)——如何开发一套自己的智能合约系统

从今天开始 编辑部将带来机器学习应用区块链系列 由于是第一期,我们想解读一些国外已有的文献和研究。故带来了START-Summit-2017-Blockchai...

46810
来自专栏云计算教程系列

如何在Ubuntu 14.04第2部分上查询Prometheus

Prometheus是一个开源监控系统和时间序列数据库。在如何在Ubuntu 14.04第1部分中查询Prometheus,我们设置了三个演示服务实例,向Pro...

1110
来自专栏ATYUN订阅号

使用多种工具组合进行分布式超参数优化

在这篇文章中,我介绍如何使用工具组合来加速超参数优化任务。这里提供了Ubuntu的说明,但可以合理地应用于任何*nix系统。

1644
来自专栏专知

【最新TensorFlow1.4.0教程01】TF1.4.0介绍与动态图机制 Eager Execution使用

【导读】主题链路知识是我们专知的核心功能之一,为用户提供AI领域系统性的知识学习服务,一站式学习人工智能的知识,包含人工智能( 机器学习、自然语言处理、计算机视...

4008
来自专栏HansBug's Lab

【LATEX】个人版latex论文模板

以下是我的个人论文模板,运行环境为Xelatex(在线ide:Sharelatex.com) 鉴于本人常有插入程序的需求,故引用了lstlisting \Req...

41512
来自专栏ATYUN订阅号

防止在训练模型时信息丢失 用于TensorFlow、Keras和PyTorch的检查点教程

如果你玩过电子游戏,你就会明白为什么检查点(chekpoint)是有用的了。举个例子,有时候你会在一个大Boss的城堡前把你的游戏的当前进度保存起来——以防进入...

6145
来自专栏人工智能LeadAI

毫秒级检测!你见过带GPU加速的树莓派吗?

87110
来自专栏AI2ML人工智能to机器学习

TF Boy 之初筵 - 分布十三式

我们在 " 机器学习平台的优化器 (平台篇、优化篇)" 里面提到TensorFlow (TF) 速度的成为深度学习的武林第一大帮。 博士好友清华,在这方面也颇有...

782
来自专栏CreateAMind

开源|MultiNet模型解决Kitti数据集自动驾驶中的道路分割、车辆检测和街道分类(附源代码)

MultiNet能够同时完成道路分割、汽车检测和道路分类的任务。MultiNet模型的实时存档速度和分割性能都处于最先进水平。详细的模型描述请查阅我们的论文。

2793

扫码关注云+社区

领取腾讯云代金券