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 凭证登录到 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 的优势。下篇,我会介绍TensorFlow的执行逻辑回归,感觉大家的观看与点赞收藏