探索 Eager Execution,了解在 TensorFlow 中默认启用它的好处
TensorFlow 是一个端到端的开源机器学习平台,可以更轻松地构建和部署机器学习模型。TensorFlow 应用程序使用一种称为数据流图的结构。默认情况下,在 TensorFlow 1.0 版中,每个图形都必须在 TensorFlow 会话中运行,这只允许一次运行整个图形,并且很难调试计算图形。绕过此默认值并能够调试代码的唯一方法是使用 Eager Execution。
Eager Execution 是一个灵活的机器学习平台,用于研究和实验,提供:
-
直观的界面,使代码可以自然地结构化并使用 Python 数据结构。小模型、小数据可以快速迭代。
-
通过提供直接调用操作来逐行检查代码和测试更改的功能,简化调试。
-
使用 Python 控制流而不是图形控制流的自然控制流,这简化了动态模型的规范。
在 TensorFlow 2.x 中,默认情况下会启用 Eager Execution,并允许逐行运行和评估 TensorFlow 代码。
学习目标
本教程着眼于 Eager Execution 的影响,以及在 TensorFlow 2.x 中默认启用它的好处。您将使用 Jupyter Notebook 来观察 TensorFlow 在禁用和启用 Eager Execution 时的行为。你将学习如何:
-
在 IBM Cloud® Pak for Data as a Service 上使用 IBM Watson® Studio 运行 Jupyter Notebook
-
禁用和启用 Eager Execution
-
了解 Eager Execution 的优势
先决条件
遵循本教程需要满足以下先决条件:
预计时间
完成本教程大约需要 30 分钟。
步骤
设置 IBM Cloud Pak for Data as a Service
-
打开浏览器,并使用 IBM Cloud 凭证登录到 IBM Cloud。
-
在顶部的搜索栏中输入内容。如果您已经有一个 Watson Studio 实例,它应该是可见的。如果是这样,请单击它。如果没有,请单击 Catalog Results 下的 Watson Studio 以创建新的服务实例。
Watson Studio
-
如果要创建新的服务实例,请选择要创建的计划类型。对于本教程,精简版(免费)计划应该就足够了)。单击创建。
-
单击服务实例登录页面上的“开始使用”。
这应该会将您带到 IBM Cloud Pak for Data as a Service 的登录页面。
-
点击右上角的头像,然后点击您姓名下方的个人资料和设置。
-
切换到“服务”选项卡。您应该会看到 Your Cloud Pak for Data services 下列出的 Watson Studio 服务实例。
您还可以将其他服务(例如 Watson Knowledge Catalog 和 Watson Machine Learning)与 IBM Cloud Pak for Data as a Service 帐户相关联。这些列在“试用我们的可用服务”下。
在此显示的示例中,IBM Cloud 帐户中已存在 Watson Knowledge Catalog 服务实例,因此它会自动与 IBM Cloud Pak for Data as a Service 帐户相关联。要添加任何其他服务(在本例中为 Watson Machine Learning),请在“试用我们的可用服务”下的服务磁贴中单击“添加”。
-
选择要创建的计划类型(精简版计划就足够了),然后单击“创建”。
创建服务实例后,您将返回到 IBM Cloud Pak for Data as a Service 实例。您应该看到该服务现在与您的 IBM Cloud Pak for Data as a Service 帐户相关联。
创建新项目并导入笔记本
-
导航到左侧的汉堡菜单 (☰),然后选择“查看所有项目”。屏幕加载后,单击“新建 +”或“新建项目 +”以创建新项目。
-
选择“创建空项目”。
-
提供项目的名称。您必须将 IBM Cloud Object Storage 实例与您的项目相关联。如果您的 IBM Cloud 帐户中已有 IBM Cloud Object Storage 服务实例,那么应将其自动填充在此处。否则,请单击“添加”。
-
选择要创建的计划类型(对于本教程来说,精简版计划就足够了),然后单击“创建”。
-
单击项目创建页面的刷新。
-
在看到您创建的 IBM Cloud Object Storage 实例显示在 Storage 下后,单击 Create。
-
创建项目后,可以将笔记本添加到项目中。单击“添加到项目 +”,然后选择“笔记本”。
-
切换到“从 URL”选项卡。提供笔记本的名称 as 和笔记本 URL 的 。
Eager_Execution_in_TensorFlow_2.x``https://raw.githubusercontent.com/IBM/dl-learning-path-assets/main/fundamentals-of-deeplearning/notebooks/Eager_Execution_in_TensorFlow_2.x.ipynb
-
在选择运行时下拉菜单下,选择默认 Python 3.7 XXS (1 vCPU,4 GB RAM)(列表中的第一个选项)。这是可用的最小运行时,每小时消耗的最小容量单位 (0.5)。对于本教程来说,此运行时应该足够了。单击创建。
-
加载 Jupyter Notebook 并准备就绪内核后,可以开始执行笔记本中的单元。
重要提示:请确保在完成后停止笔记本的内核,以节省内存资源。
注意:项目中包含的 Jupyter Notebook 已清除输出。如果您想查看已经完成输出的笔记本,请参阅示例笔记本.
通读笔记本
花一些时间浏览笔记本的各个部分以获得概述。笔记本由文本(Markdown 或标题)单元格和代码单元格组成。Markdown 单元格提供有关代码设计用途的注释。
通过突出显示每个单元格,然后单击笔记本顶部的“运行”或使用键盘快捷键运行单元格(Shift + Enter ,但这可能因平台而异)来单独运行单元格。当单元运行时,星号 () 会显示在单元格的左侧。当该单元格完成运行时,将显示一个序列号(例如,)。[*]``[17]
注意:笔记本中的某些注释是修改代码特定部分的说明。在运行单元之前,按照指示执行任何更改。
笔记本分为多个部分。
-
第 1 节解释了什么是 Eager Execution 及其功能。
-
第 2 节提供了安装 TensorFlow 的说明。
-
第 3 节将引导您完成一个示例,该示例演示了在禁用 Eager Execution 时 TensorFlow 操作的工作原理。
-
第 4 节将引导您完成一个示例,该示例演示了在启用 Eager Execution 时 TensorFlow 操作的工作原理。请注意,在遵循这些说明之前,必须重新启动内核。
-
第 5 节给出了一个动态控制流的示例,当启用 Eager Execution 时,这是可能的。
运行笔记本的前半部分
运行笔记本第 2 节和第 3 节中的单元格。这些部分中的代码将安装 TensorFlow 版本 2.2.0 及其先决条件,然后演示在禁用 Eager Execution 时 Tensor 上的一组操作的行为方式。您可以看到,在执行整个图形(使用 *Session*)之前,Tensor 变量的中间值不可用。这使得调试代码变得困难。
请注意,使用代码创建的对象的类型是 。a = tf.constant(np.array([1., 2., 3.]))``tensorflow.python.framework.ops.Tensor
重新启动内核
接下来,您将启用“预先执行”并运行相同的代码。但是,在创建任何张量之前,必须在代码开头启用或禁用 Eager Execution。因此,在启用 Eager Execution 之前,必须重新启动内核。
-
要重新启动内核,请转到“内核”菜单,然后单击“重新启动”。在出现的选项中,单击“重新启动”以确认要重新启动内核。
运行笔记本的后半部分
-
重新启动内核后,运行第 4 节下的第一个代码单元,该代码单元导入 和 .请注意,执行时出现在代码左侧的序列号现在已重置,并且第 4 节的 import 语句的序列号为 。
tensorflow``numpy``[1]
-
继续执行第 4 节和第 5 节中的其余单元格。在第 4 节中,启用了“预先执行”,并重新运行之前运行的相同代码。由于启用了 Eager Execution,因此现在可以调试代码,并且可以检查中间变量值,而无需将整个代码作为*会话*的一部分运行。
-
另请注意,当启用“预先执行”时,代码会创建一个类型的对象。这意味着,当您启用或禁用 Eager Execution 时,可以重复使用相同的代码。
a = tf.constant(np.array([1., 2., 3.]))``tensorflow.python.framework.ops.EagerTensor
-
运行第 5 节中的代码单元。第 5 节中的代码显示了在启用 Eager Execution 的情况下,Tensor 的行为与宿主语言中的任何其他变量一样,您甚至可以在 Tensor 控制流中使用宿主语言控制语句和循环,例如 、 和。
if``while``for
总结
在本教程中,您了解了 Eager Execution 的影响,以及在 TensorFlow 2.x 中默认启用它的好处。您学习了如何在 IBM Cloud Pak for Data as a Service 上使用 Watson Studio 运行 Jupyter Notebook,如何禁用和启用 Eager Execution,以及 Eager Execution 的优势。
在线教程
- 麻省理工学院人工智能视频教程 – 麻省理工人工智能课程
- 人工智能入门 – 人工智能基础学习。Peter Norvig举办的课程
- EdX 人工智能 – 此课程讲授人工智能计算机系统设计的基本概念和技术。
- 人工智能中的计划 – 计划是人工智能系统的基础部分之一。在这个课程中,你将会学习到让机器人执行一系列动作所需要的基本算法。
- 机器人人工智能 – 这个课程将会教授你实现人工智能的基本方法,包括:概率推算,计划和搜索,本地化,跟踪和控制,全部都是围绕有关机器人设计。
- 机器学习 – 有指导和无指导情况下的基本机器学习算法
- 机器学习中的神经网络 – 智能神经网络上的算法和实践经验
- 斯坦福统计学习
有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
人工智能书籍
- OpenCV(中文版).(布拉德斯基等)
- OpenCV+3计算机视觉++Python语言实现+第二版
- OpenCV3编程入门 毛星云编著
- 数字图像处理_第三版
- 人工智能:一种现代的方法
- 深度学习面试宝典
- 深度学习之PyTorch物体检测实战
- 吴恩达DeepLearning.ai中文版笔记
- 计算机视觉中的多视图几何
- PyTorch-官方推荐教程-英文版
- 《神经网络与深度学习》(邱锡鹏-20191121)
- …
第一阶段:零基础入门(3-6个月)
新手应首先通过少而精的学习,看到全景图,建立大局观。 通过完成小实验,建立信心,才能避免“从入门到放弃”的尴尬。因此,第一阶段只推荐4本最必要的书(而且这些书到了第二、三阶段也能继续用),入门以后,在后续学习中再“哪里不会补哪里”即可。
第二阶段:基础进阶(3-6个月)
熟读《机器学习算法的数学解析与Python实现》并动手实践后,你已经对机器学习有了基本的了解,不再是小白了。这时可以开始触类旁通,学习热门技术,加强实践水平。在深入学习的同时,也可以探索自己感兴趣的方向,为求职面试打好基础。
第三阶段:工作应用
这一阶段你已经不再需要引导,只需要一些推荐书目。如果你从入门时就确认了未来的工作方向,可以在第二阶段就提前阅读相关入门书籍(对应“商业落地五大方向”中的前两本),然后再“哪里不会补哪里”。
有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓