前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tensorflow Eager Execution入门指南

Tensorflow Eager Execution入门指南

作者头像
狼啸风云
修改2022-09-03 20:51:46
5830
修改2022-09-03 20:51:46
举报

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

  1. 使用Eager Execution,你可以在没有session的情况下运行你的代码
  2. 使用您自己的functions轻松解决梯度计算
  3. 支持将数据库里的数据读成用于实验的数据集
  4. 对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的形式加载该模型。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档