
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create machine learning models
/ 50
Use the model
/ 50
在本实验中,您将了解机器学习的基本“Hello World”应用,在此过程中,您不是使用 Java 或 C++ 等语言编写明确的规则,而是构建一个使用数据进行训练的系统,以推断用来确定数字之间关系的规则。
在本实验中,您将学习如何完成以下操作:
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
请考虑以下问题:您要构建一个能够识别运动状态的健身跟踪系统。您也许能获取用户的移动速度,并尝试使用以下条件,根据该速度推断用户的运动状态:
如果要编写一个帮助检测高尔夫运动的程序(用代码实现),您会发现这极其困难。
那怎么办呢?使用机器学习可以解决这个问题!
在上一部分,您在尝试确定用户的健身运动时遇到了一个问题。要检测高尔夫这类运动,条件必然更加复杂,因而您必须编写更多代码,甚至殚精竭虑也难以实现。
参考下图,想一想按照传统方式是怎样构建应用的:
您一般会使用一种编程语言来表达规则。程序会按照这些规则来处理数据,然后提供答案。就运动检测而言,程序按照您编写的代码所定义的规则(用于确定运动类型)来处理数据(用户的移动速度),从而得出答案,也就是用于确定用户运动状态(步行、跑步、骑车等)的函数的返回值。
通过机器学习检测这类运动的过程与传统编程十分相似,但数据处理方式有所不同:
您无需尝试定义规则,也不需要通过编程语言来表达规则,只需将答案(通常称为标签)和数据一起提供给机器学习模型。然后,机器就会推断出确定答案与数据之间关系的规则。例如,在机器学习中,运动检测场景可能如下所示:
您只需收集大量数据,并为其添加标签,有效地说明“什么情况下是步行状态”“什么情况下是跑步状态”等等。然后,计算机就可以根据这些数据推断出规则,用以确定代表特定运动的独特模式。
除了能在这些场景下代替编程,机器学习还支持对高尔夫等新场景的判断,这在基于规则的传统编程方法下可能无法实现。
在传统编程中,代码会编译为一个二进制文件(通常称为程序)。在机器学习中,根据数据和标签创建的项目称为模型。
因此,如果回到此图表:
将上述结果视为一个模型,它在运行时的使用方式如下:
您要向模型传递一些数据,基于这些数据,模型会利用通过训练推断出的规则来生成预测,比如说“这样的数据看起来像是在步行”“那样的数据看起来像是在骑车”等等。
在本实验中,您将构建一个非常简单的“Hello World”模型,该模型由可用于任何机器学习场景的基础组件构成!
在 Google Cloud 控制台的导航菜单 () 中依次点击 Vertex AI > Workbench。
找到
Workbench 实例的 JupyterLab 界面会在新浏览器标签页中打开。
在“启动器”菜单的其他下,选择终端。
检查是否已配置 Python 环境。复制以下命令并粘贴到终端中。
输出示例:
pip3
,请在终端运行以下命令。Pylint 是一款用于检查 Python 代码错误的工具,它可以突出显示 Python 源代码中的语法和格式问题。
pylint
软件包。requirements.txt
文件中所列的实验所需软件包:现在,您的环境已设置完毕!
看看下面几组数字。您能看出它们之间的关系吗?
X: |
-1 |
0 |
1 |
2 |
3 |
4 |
Y: |
-2 |
1 |
4 |
7 |
10 |
13 |
从左往右看,请注意 X 值依次增加了 1,对应的 Y 值依次增加了 3。因此,它们之间的关系应是 Y = 3X 再加/减某个值。
接下来再看,当 X 值为 0,对应的 Y 值为 1。
根据这两项观察结果,您可以确定它们之间的关系为 Y = 3X + 1。
这基本上就是使用代码来训练模型(称为神经网络),从而找出数据中的规律的方式。
如果您要使用数据来训练神经网络,只需向神经网络提供一组 X 值和一组 Y 值,它应该就能找出这些数值之间的关系。
点击 Workbench 左侧的 + 图标以打开新的启动器。
在“启动器”菜单的笔记本下,选择 Python3。
系统会显示一个新的 Jupyter 笔记本。如需详细了解如何使用 Jupyter 笔记本,请参阅 Jupyter 笔记本文档。
logging
和 google-cloud-logging
。在第一个单元中,添加以下代码:tensorflow
以训练和评估模型。为了便于使用,将其命名为 tf
。在第一个单元中添加以下代码。numpy
来解析数据,以进行调试。为了便于使用,将其命名为 np
。在第一个单元中添加以下代码。如需运行该单元,请点击运行按钮或按 Shift + Enter。
保存笔记本。依次点击文件 -> 保存。将该文件命名为 model.ipynb
,然后点击确定。
接下来,您将准备要用来训练模型的数据。在本实验中,您将使用之前用过的 6 个 X 值和 6 个 Y 值:
X: |
-1 |
0 |
1 |
2 |
3 |
4 |
Y: |
-2 |
1 |
4 |
7 |
10 |
13 |
可以看出,X 值和 Y 值之间的关系是 Y = 3X + 1,因此当 X = 1 时 Y = 4,以此类推。
名为 numpy
的 python 库提供了许多数组类型的数据结构,这些结构实际上是提供数据的标准方式。如要使用这些结构,可以使用 np.array([])
将相关值指定为 numpy
中的数组
在此部分中,您将使用 TensorFlow 设计模型。
您将使用一种称为“神经网络”的机器学习算法来训练模型。您将创建最简单的神经网络,该网络的结构只有 1 层,其中有 1 个神经元。该神经网络一次只能输入一个值,因此输入形状必须为 [1]。
接下来,您将编写代码来编译神经网络。编写代码时,必须指定 2 个函数:一个 loss
和一个 optimizer
。
如果您学习过很多与机器学习相关的数学知识,一般来说在这里可以用到,不过,tf.keras
已经封装了相关的数学计算函数。
根据先前的观察,您知道了这些数字之间的关系为 Y = 3X + 1
。
当计算机尝试学习这种关系时,先猜测的关系可能是 Y = 10X + 10
。loss
函数会将猜测的答案与已知的正确答案进行比较,并衡量猜测的正确度。
tf.keras
中不同类型的 loss 函数,请参阅“模块:tf.keras.losses”文档。Y = 5X + 5
的答案。虽然这仍不正确,但更接近正确的结果了,也就是说,损失降低了。tf.keras
中不同类型的 optimizer 函数,请参阅“模块:tf.keras.optimizers”文档。在上面的代码段中,您告诉模型 loss 函数使用 mean_squared_error
,optimizer 函数使用 stochastic gradient descent (sgd)
。您目前还不需要理解这些函数的数学原理,但您会发现它们能达到目的!
为了训练神经网络来“学习”X 值和 Y 值之间的关系,您将使用 model.fit
。
此函数将通过循环来训练模型,在一次循环中,模型将进行猜测,再衡量猜测结果的准确度(即损失),然后使用优化器 (optimizer) 再进行一次猜测,以此类推。模型会根据您指定的周期数(本实验中为 500),重复执行这一过程。
根据上面的代码,model.fit
将对模型进行固定周期数的训练。
model.fit
,请参阅“tf.keras.Model”文档中的“fit”部分。现在,您的文件应如下所示(请注意,这包括两个单元中的代码):
您的脚本已准备就绪!运行脚本,看看会发生什么情况。
点击运行按钮或按 Shift + Enter,以运行笔记本中的第二个单元。
查看输出。请注意,该脚本会输出每个周期的损失。您的输出可能与下面显示的内容略有不同。
e-
的数字是以科学记数法显示的,其指数为负数。滚动浏览各个周期,您会看到前几个周期的损失很大,但是在逐步减小。例如:
随着训练的进行,损失变得非常小:
到训练完成时,损失变得极其小,这表明我们的模型能够很准确地推断数字之间的关系:
您可能不需要训练完 500 个周期,可以尝试设置不同的值。从这个例子来看,仅过了 50 个周期,损失就变得非常小了,所以这可能已经足够了!
点击“检查我的进度”以验证是否完成了以下目标:
现在,您的模型已经完成学习 X 值和 Y 值之间关系的训练。
您可以使用 model.predict
方法,针对模型之前在训练期间未曾遇到过的 X 值预测对应的 Y 值。例如,如果 X = 10,您认为 Y 值会是多少?
cloud_logger
,以便生成可以检查进度的 Cloud 日志。按 Ctrl + s 或依次点击文件 -> 保存,保存笔记本。
点击运行按钮或按 Shift + Enter,运行第三个单元。
Y 值将在训练日志(周期记录)之后列出。
输出示例:
您可能认为 Y = 31,对吧?但结果略大一些 (31.005917)。您觉得这是为什么?
答案:神经网络处理的是概率问题。它计算出 X 和 Y 之间的关系极有可能是 Y = 3X + 1,但由于只有 6 个数据点,无法确定这种关系是否准确。因此,针对 X 为 10 计算出的结果会很接近 31,但不一定是 31。
在使用神经网络时,您会发现这种模式经常会出现。您要处理的几乎都是概率问题而非确定性问题,您需要编写一些代码,根据概率来确定结果,执行分类任务时更是如此。
点击“检查我的进度”以验证是否完成了以下目标:
恭喜!在本实验中,您使用 TensorFlow 创建、训练并测试了自己的机器学习模型。
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 9 月 16 日
上次测试实验的时间:2024 年 9 月 16 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
One lab at a time
Confirm to end all existing labs and start this one