在 TensorFlow 中启用 Eager Execution

探索 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 的优势

先决条件

遵循本教程需要满足以下先决条件:

  • IBM Cloud 帐户

  • IBM Cloud Pak for Data

预计时间

完成本教程大约需要 30 分钟。

步骤

  1. 设置 IBM Cloud Pak for Data as a Service

  2. 创建一个新项目并导入笔记本

  3. 通读笔记本

  4. 运行笔记本的前半部分

  5. 重新启动内核

  6. 运行笔记本的后半部分

设置 IBM Cloud Pak for Data as a Service

  1. 打开浏览器,并使用 IBM Cloud 凭证登录到 IBM Cloud。

    在 TensorFlow 中启用 Eager Execution_第1张图片

  2. 在顶部的搜索栏中输入内容。如果您已经有一个 Watson Studio 实例,它应该是可见的。如果是这样,请单击它。如果没有,请单击 Catalog Results 下的 Watson Studio 以创建新的服务实例。Watson Studio

    在 TensorFlow 中启用 Eager Execution_第2张图片

  3. 如果要创建新的服务实例,请选择要创建的计划类型。对于本教程,精简版(免费)计划应该就足够了)。单击创建

    在 TensorFlow 中启用 Eager Execution_第3张图片

  4. 单击服务实例登录页面上的“开始使用”。

    在 TensorFlow 中启用 Eager Execution_第4张图片

    这应该会将您带到 IBM Cloud Pak for Data as a Service 的登录页面。

  5. 点击右上角的头像,然后点击您姓名下方的个人资料和设置在 TensorFlow 中启用 Eager Execution_第5张图片

  6. 切换到“服务”选项卡。您应该会看到 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),请在“试用我们的可用服务”下的服务磁贴中单击“添加”。

    在 TensorFlow 中启用 Eager Execution_第6张图片

  7. 选择要创建的计划类型(精简版计划就足够了),然后单击“创建”。

    在 TensorFlow 中启用 Eager Execution_第7张图片

创建服务实例后,您将返回到 IBM Cloud Pak for Data as a Service 实例。您应该看到该服务现在与您的 IBM Cloud Pak for Data as a Service 帐户相关联。

在 TensorFlow 中启用 Eager Execution_第8张图片

创建新项目并导入笔记本

  1. 导航到左侧的汉堡菜单 (☰),然后选择“查看所有项目”。屏幕加载后,单击“新建 +”或“新建项目 +”以创建新项目

    在 TensorFlow 中启用 Eager Execution_第9张图片

  2. 选择“创建空项目”。

    在 TensorFlow 中启用 Eager Execution_第10张图片

  3. 提供项目的名称。您必须将 IBM Cloud Object Storage 实例与您的项目相关联。如果您的 IBM Cloud 帐户中已有 IBM Cloud Object Storage 服务实例,那么应将其自动填充在此处。否则,请单击“添加”。

    在 TensorFlow 中启用 Eager Execution_第11张图片

  4. 选择要创建的计划类型(对于本教程来说,精简版计划就足够了),然后单击“创建”。

    在 TensorFlow 中启用 Eager Execution_第12张图片

  5. 单击项目创建页面的刷新

    在 TensorFlow 中启用 Eager Execution_第13张图片

  6. 在看到您创建的 IBM Cloud Object Storage 实例显示在 Storage 下后,单击 Create

    在 TensorFlow 中启用 Eager Execution_第14张图片

  7. 创建项目后,可以将笔记本添加到项目中。单击“添加到项目 +”,然后选择“笔记本”。

    在 TensorFlow 中启用 Eager Execution_第15张图片

  8. 切换到“从 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

  9. 在选择运行时下拉菜单下,选择默认 Python 3.7 XXS (1 vCPU,4 GB RAM)(列表中的第一个选项)。这是可用的最小运行时,每小时消耗的最小容量单位 (0.5)。对于本教程来说,此运行时应该足够了。单击创建

    在 TensorFlow 中启用 Eager Execution_第16张图片

  10. 加载 Jupyter Notebook 并准备就绪内核后,可以开始执行笔记本中的单元。

    在 TensorFlow 中启用 Eager Execution_第17张图片

重要提示:请确保在完成后停止笔记本的内核,以节省内存资源。

在 TensorFlow 中启用 Eager Execution_第18张图片

注意:项目中包含的 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 变量的中间值不可用。这使得调试代码变得困难。

在 TensorFlow 中启用 Eager Execution_第19张图片

请注意,使用代码创建的对象的类型是 。a = tf.constant(np.array([1., 2., 3.]))``tensorflow.python.framework.ops.Tensor

在 TensorFlow 中启用 Eager Execution_第20张图片

重新启动内核

接下来,您将启用“预先执行”并运行相同的代码。但是,在创建任何张量之前,必须在代码开头启用或禁用 Eager Execution。因此,在启用 Eager Execution 之前,必须重新启动内核。

  1. 要重新启动内核,请转到“内核”菜单,然后单击“重新启动”。在出现的选项中,单击“重新启动”以确认要重新启动内核。

在 TensorFlow 中启用 Eager Execution_第21张图片

运行笔记本的后半部分

  1. 重新启动内核后,运行第 4 节下的第一个代码单元,该代码单元导入 和 .请注意,执行时出现在代码左侧的序列号现在已重置,并且第 4 节的 import 语句的序列号为 。tensorflow``numpy``[1]

    在 TensorFlow 中启用 Eager Execution_第22张图片

  2. 继续执行第 4 节和第 5 节中的其余单元格。在第 4 节中,启用了“预先执行”,并重新运行之前运行的相同代码。由于启用了 Eager Execution,因此现在可以调试代码,并且可以检查中间变量值,而无需将整个代码作为*会话*的一部分运行。

    在 TensorFlow 中启用 Eager Execution_第23张图片

  3. 另请注意,当启用“预先执行”时,代码会创建一个类型的对象。这意味着,当您启用或禁用 Eager Execution 时,可以重复使用相同的代码。a = tf.constant(np.array([1., 2., 3.]))``tensorflow.python.framework.ops.EagerTensor

    在 TensorFlow 中启用 Eager Execution_第24张图片

  4. 运行第 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 的优势。

你可能感兴趣的:(tensorflow,人工智能,python,机器学习,深度学习)