arrow_back

TensorFlow:Qwik Start

登录 加入
访问 700 多个实验和课程

TensorFlow:Qwik Start

实验 45 分钟 universal_currency_alt 1 积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
访问 700 多个实验和课程

GSP637

Google Cloud 自學實驗室標誌

總覽

本實驗室將說明機器學習的基礎模型「Hello World」。您將建構的系統是根據資料訓練,來推論並決定數字間關係的規則,不是用 Java 或 C++ 等語言編寫精確的規則。

目標

本實驗室的學習內容包括:

  • 在 Jupyter 筆記本設定開發環境
  • 設計機器學習模型
  • 訓練類神經網路
  • 測試模型

設定和需求

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。

簡介

請思考下列問題:您正在建構健身狀況追蹤系統,要執行動作辨識功能。您可能有某人的移動速度,並想根據這個速度,使用條件式推論出此人的活動:

if(speed<4){ status=WALKING; }
  • 您可以延伸以上條件式,加入另一項條件「跑步」
if(speed<4){ status=WALKING; } else { status=RUNNING; }
  • 使用相同方式加入另一項條件,即可偵測「騎自行車」
if(speed<4){ status=WALKING; } else if(speed<12){ status=RUNNING; } else { status=BIKING; }
  • 現在請思考,如果想加入「打高爾夫球」這類活動,會發生什麼事?若要建立判斷活動的規則,就沒那麼清楚了。
// Now what?

如要以程式碼編寫偵測打高爾夫球活動的程式,會極為困難。

所以要怎麼做?機器學習可以解決這個問題!

什麼是機器學習?

上一節中有個問題,要您嘗試判斷使用者的健身活動。如要偵測打高爾夫球這類活動,程式碼的條件必定更加複雜,因此您遇上了程式碼的限制。

以傳統方式建構應用程式的過程如下:

圖表顯示傳統程式設計的流程:輸入規則和資料,然後輸出答案

您使用程式設計語言表達規則,這些規則以資料為依據,您的程式會提供答案。在活動偵測的範例中,規則 (為定義活動類型而編寫的程式碼) 會依據資料 (某人的移動速度) 來找出答案,也就是判斷使用者活動狀態 (走路、跑步、騎自行車等) 函式傳回的值。

運用機器學習偵測這些活動的過程與此十分類似,只有軸不同:

圖表顯示機器學習的流程:輸入答案和資料,然後輸出規則

您會同時提供答案 (通常稱為標籤) 和資料,不必嘗試定義規則並以程式設計語言表達,機器就會判斷答案與資料間的關係,並推論出規則。舉例來說,在機器學習的脈絡中,活動偵測情境應該像這樣:

走路、跑步、騎自行車和打高爾夫球四個標籤,以零和一表示

只要收集大量資料並加上標籤,有效說明「這是走路的狀態」、「這是跑步的狀態」等,電腦就能依資料判斷特定活動的獨特模式,推論出規則。

機器學習不僅是為此情境編寫程式的替代方法,還能應用於打高爾夫球等新情境,解決傳統規則型程式設計方法難以處理的問題。

在傳統程式設計中,程式碼會編譯成二進位檔,通常稱為程式。在機器學習中,從資料和標籤建立的項目稱為模型。

所以,如果回到這個圖表:

圖表顯示機器學習的流程:輸入答案和資料,然後輸出規則

將上圖的結果視為模型,在執行階段的運用方式如下:

圖表顯示在模型中輸入資料並輸出預測的流程

模型取得一些資料,使用訓練時推論出的規則來生成預測,即「這筆資料像是在走路」、「這筆資料像是在騎自行車」等。

在本實驗室中,您將使用構成元素,建構非常簡單的「Hello World」模型,且能用於任何機器學習情境!

工作 1:開啟 Vertex AI Workbench 中的筆記本

  1. 前往 Google Cloud 控制台,依序點按「導覽選單」圖示 「導覽選單」圖示 >「Vertex AI」>「Workbench」

  2. 找出 執行個體,點按「Open JupyterLab」按鈕。

Workbench 執行個體的 JupyterLab 介面會在新瀏覽器分頁開啟。

注意:如果在 JupyterLab 沒有看見筆記本,請按照以下額外步驟重設執行個體:

1. 關閉 JupyterLab 的瀏覽器分頁,回到 Workbench 首頁。

2. 勾選執行個體名稱旁的核取方塊,然後點按「重設」

3. 「開啟 JupyterLab」按鈕再次啟用後,等待一分鐘,然後點按「開啟 JupyterLab」

安裝 TensorFlow 和其他套件

  1. 在「Launcher」選單中的「Other」底下,選取「Terminal」

  2. 檢查 Python 環境是否已設定完成,然後複製下列指令,貼到終端機。

python --version

輸出內容範例:

Python 3.10.14
  1. 執行下列指令,安裝 TensorFlow 套件。
pip3 install tensorflow
  1. 在終端機執行下列指令,更新 pip3
pip3 install --upgrade pip

Pylint 是檢查 Python 程式碼錯誤的工具,可以標出 Python 原始碼中的語法和樣式問題。

  1. 執行下列指令,安裝 pylint 套件。
pip install -U pylint --user
  1. requirements.txt 檔案中,安裝實驗室所需的套件:
pip install -r requirements.txt

現在環境已設定完畢!

工作 2:建立第一個機器學習模型

請查看下列數字組。您是否能看出數字間的關係?

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 值後,應該要能辨識數值間的關係。

建立新筆記本和匯入程式庫

  1. 點選 Workbench 左側的 + 圖示,開啟新的啟動器。

  2. 在「Launcher」選單中的「Notebook」底下,選取「Python3」

新的筆記本檔案

畫面將顯示新的 Jupyter 筆記本。如要進一步瞭解如何使用 Jupyter 筆記本,請參閱 Jupyter Notebook 說明文件

  1. 匯入並設定 Cloud Logging 的 logginggoogle-cloud-logging在第一個儲存格中新增下列程式碼:
import logging import google.cloud.logging as cloud_logging from google.cloud.logging.handlers import CloudLoggingHandler from google.cloud.logging_v2.handlers import setup_logging cloud_logger = logging.getLogger('cloudLogger') cloud_logger.setLevel(logging.INFO) cloud_logger.addHandler(CloudLoggingHandler(cloud_logging.Client())) cloud_logger.addHandler(logging.StreamHandler())
  1. 匯入 tensorflow 來訓練和評估模型,並命名為 tf 以方便使用,然後在第一個儲存格中新增下列程式碼。
# Import TensorFlow import tensorflow as tf
  1. 匯入 numpy 來剖析資料,達到偵錯目的,並命名為 np 以方便使用,然後在第一個儲存格中新增下列程式碼。
# Import numpy import numpy as np
  1. 如要執行儲存格,請點選「Run」按鈕或按下 Shift + Enter

  2. 儲存筆記本,然後依序點選「Files」>「Save」。將檔案命名為 model.ipynb,然後點選「OK」

注意:您可以忽略輸出內容中可能出現的警告。

準備資料

接下來,您將準備訓練模型的資料。在本實驗室中,您會使用先前用過的 6 個 X 值和 Y 值:

X:

-1

0

1

2

3

4

Y:

-2

1

4

7

10

13

如您所見,X 值與 Y 值的關係為 Y=3x+1,所以當 X = 1,會得出 Y = 4,以此類推。

Python 程式庫 numpy 會提供大量陣列型資料架構,是標準的資料輸入方式。如要運用這些資料,請使用 np.array([]),將數值指定為 numpy 中的陣列

  1. 第二個儲存格中新增下列程式碼:
xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float) ys = np.array([-2.0, 1.0, 4.0, 7.0, 10.0, 13.0], dtype=float)

設計模型

在本節中,您將運用 TensorFlow 設計模型。

您將使用名為「類神經網路」的機器學習演算法,來訓練模型。您會建立最簡易的類神經網路,具備 1 層,其中含有 1 個神經元。該類神經網路的輸入內容一次只會有一個值,因此輸入內容的格式必須為 [1]。

注意:本任務後續的實驗室將進一步說明類神經網路。
  1. 第二個儲存格中新增下列程式碼:
model = tf.keras.Sequential([tf.keras.layers.Dense(units=1, input_shape=[1])])

編譯模型

接下來,您將編寫程式碼來編譯類神經網路。這個步驟必須指定 2 個函式:lossoptimizer

若您已看過許多機器學習的數學原理,通常會在此處用到,不過 tf.keras 貼心地將這些原理都封裝在函式中。

  • 根據先前檢視的結果,已知數字間的關係為 y=3x+1

  • 當電腦試圖「學習」這個關係,會先猜測可能是 y=10x+10loss 函式則會依據已知的正確解答,測量電腦猜測的答案和準確度。

注意:如要進一步瞭解 tf.keras 中不同類型的損失函式,請參閱 Module: tf.keras.losses 說明文件
  • 接下來模型使用最佳化器函式,再次猜測。模型會根據損失函式的結果,嘗試將損失降至最低。此時,模型或許會得出下列答案:y=5x+5。雖然仍不正確,但有比較接近正確結果,也就是損失減少了。
注意:如要進一步瞭解 tf.keras 中不同類型的最佳化器函式,請參閱 Module: tf.keras.optimizers 說明文件
  • 模型會依照您指定的訓練週期數,重複執行上述流程。
  1. 第二個儲存格中新增下列程式碼:
model.compile(optimizer=tf.keras.optimizers.SGD(), loss=tf.keras.losses.MeanSquaredError())

在以上程式碼片段中,您告訴模型要對損失使用 mean_squared_error,對最佳化器則使用 stochastic gradient descent (sgd)。您目前不需要理解這些程式碼的數學原理,但程式碼會順利運作!

注意:之後您就會瞭解適用於不同情境的損失和最佳化器函式。

訓練類神經網路

為了訓練類神經網路「學習」X 值和 Y 值間的關係,您會使用 model.fit

這個函式會以迴圈形式訓練模型,也就是模型會猜測、測量準確度 (即損失),使用最佳化器再猜一次。模型會按照指定的訓練週期數,重複執行上述流程 (本實驗室的設定是 500)。

  1. 第二個儲存格中新增下列程式碼:
model.fit(xs, ys, epochs=500)

在以上程式碼中,model.fit 會按照固定的訓練週期數來訓練模型。

注意:如要進一步瞭解 model.fit,請參閱 tf.keras.Model 說明文件中的「fit」一節。

現在檔案應該像這樣 (請注意,程式碼會位於兩個不同儲存格):

import logging import google.cloud.logging as cloud_logging from google.cloud.logging.handlers import CloudLoggingHandler from google.cloud.logging_v2.handlers import setup_logging cloud_logger = logging.getLogger('cloudLogger') cloud_logger.setLevel(logging.INFO) cloud_logger.addHandler(CloudLoggingHandler(cloud_logging.Client())) cloud_logger.addHandler(logging.StreamHandler()) import tensorflow as tf import numpy as np xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float) ys = np.array([-2.0, 1.0, 4.0, 7.0, 10.0, 13.0], dtype=float) model = tf.keras.Sequential([tf.keras.layers.Dense(units=1, input_shape=[1])]) model.compile(optimizer=tf.keras.optimizers.SGD(), loss=tf.keras.losses.MeanSquaredError()) model.fit(xs, ys, epochs=500)

執行程式碼

指令碼已準備就緒!執行指令碼,看看會發生什麼事。

  1. 點選「Run」按鈕或按下 Shift + Enter,即可執行筆記本中的第二個儲存格。

  2. 查看輸出內容。請注意,指令碼會顯示每次訓練週期的損失。您的輸出內容可能會與此處稍有不同。

注意:值中含有 e- 的數字是科學記號的負指數。

捲動瀏覽訓練週期時,您會看到前幾個訓練週期的損失很多,但之後逐漸減少。例如:

多列訓練週期損失,且損失逐漸減少。第二列訓練週期損失是 52.1992,第九列則是 9.7403

隨著訓練進行,損失會變得非常少:

第 45 列的訓練週期損失是 0.0023,第 54 列則是 7.1057e-04

在訓練結束前,損失會變得極少,表示模型可以很準確地推論數字間的關係:

第 495 列的訓練週期損失是 5.4194e-08,第 500 列則是 4.8896e-08

您可能不需要 500 個這麼多的訓練週期,可試試不同數值。以這個範例來說,僅 50 個訓練週期後,損失就已經非常少,所以可能這樣就夠了!

點選「Check my progress」,確認目標已達成。 建立機器學習模型

使用模型

現在您已訓練模型學習 X 值和 Y 值間的關係。

使用 model.predict 方法,可以為之前模型訓練時沒有出現的 X 值,找出對應的 Y 值。例如 X = 10,那 Y 值會是多少?

  1. 第三個儲存格中新增下列程式碼,做出預測:
cloud_logger.info(str(model.predict(np.array([10.0])))) 注意:為了產生可以檢查進度的 Cloud 記錄,預測結果會傳遞至 cloud_logger
  1. 按下 Ctrl+s 或依序點選「File」->「Save」,儲存筆記本。

  2. 如要執行第三個儲存格,請點選「Run」按鈕或按下 Shift + Enter

Y 值會列於訓練記錄之後 (訓練週期)。

輸出內容範例:

Y 值是 31.005917

您可能會以為 Y=31,但結果超出了一點 (31.005917)。為什麼會這樣呢?

答案:類神經網路與「機率」有關。類神經網路計算出 X 和 Y 之間的關係很有可能是 Y=3X+1,但只有 6 個資料點,無法確定這個關係是否正確。因此,10 的結果會很接近 31,但不一定是 31。

運用類神經網路的過程中,這個模式會重複出現。您將處理的幾乎都是機率而非確切數值,因此要寫些程式,依據機率找出結果,執行分類工作時更是如此。

點選「Check my progress」,確認目標已達成。 使用模型

恭喜!

恭喜!在本實驗室中,您已使用 TensorFlow 建立、訓練並測試自己的機器學習模型。

後續步驟/瞭解詳情

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2024 年 9 月 16 日

實驗室上次測試日期:2024 年 9 月 16 日

Copyright 2025 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。