TensorFlow 入門教學課程
TensorFlow 是目前最受歡迎的深度學習和機器學習框架之一。它由 Google Brain 團隊開發,已被廣泛應用於許多研究項目和工業應用。本文將提供循序漸進的教程,幫助初學者快速上手 TensorFlow。
1. 理解 TensorFlow 基礎知識
在開始安裝和使用 TensorFlow 之前,了解 TensorFlow 是什麼以及它背後的基本概念至關重要。 TensorFlow 是一個用於數值計算和機器學習的開源框架。它使用資料流程圖來執行數值運算,其中圖中的節點代表數學運算,邊代表連接它們的多維資料數組(張量)。
2. TensorFlow 安裝
使用TensorFlow的第一步是安裝它。以下是如何使用Python套件管理器pip安裝TensorFlow的方法。
1. Python 安裝:
請確保您的系統已安裝 Python。截至本文撰寫之時,TensorFlow 與 Python 3.6 至 3.9 版本相容。您可以從 Python 官方網站下載 Python。
2. 虛擬環境:
強烈建議建立虛擬環境來隔離您的 TensorFlow 專案:
“噓
python -m venv myenv
適用於 Mac/Linux 用戶
myenv\Scripts\activate 適用於 Windows 用戶
“
3. TensorFlow 安裝:
現在,使用 pip 安裝 TensorFlow:
“噓
pip 安裝張量流
“
3. 使用 TensorFlow 實作 Hello World
現在TensorFlow已經安裝好了,讓我們建立一個簡單的Python腳本來驗證安裝。建立一個新的Python文件,並將其命名為`hello_tensorflow.py`。
“`蟒蛇
將tensorflow作為tf導入
創建一個常數
hello = tf.constant('你好,TensorFlow!')
開始會話
使用 tf.Session() 作為 sess:
result = sess.run(hello)
打印(結果)
“
請依據 TensorFlow 2.x 版本調整程式碼:
“`蟒蛇
將tensorflow作為tf導入
創建一個常數
hello = tf.constant('你好,TensorFlow!')
使用立即執行模式運行(預設為開啟)
print(hello.numpy())
“
儲存文件,然後運行:
“噓
python hello_tensorflow.py
“
4. 理解張量與基本運算
張量是TensorFlow中的主要資料結構,它是一種多維數組。以下是一些範例,可幫助您理解張量:
“`蟒蛇
將tensorflow作為tf導入
建立張量
標量 = tf.常數(7) 標量
vector = tf.constant([1, 2, 3]) vector
matrix = tf.constant([[1, 2], [3, 4]]) matrix
tensor3d = tf.constant([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]) 3D 張量
print(f'標量:{scalar}')
print(f'Vector: {vector}')
print(f'矩陣: {matrix}')
print(f'3D張量:{tensor3d}')
“
對張量執行基本操作:
“`蟒蛇
a = tf.constant([[1, 2], [3, 4]])
b = tf.constant([[5, 6], [7, 8]])
加法運算
add = tf.add(a, b)
矩陣乘法運算
mul = tf.matmul(a, b)
print(f'新增項:{add}')
print(f'矩陣乘法:{mul}')
“
5. 創建一個簡單的神經網路模型
下一步是建立一個簡單的神經網路模型。我們將使用 MNIST 資料集(一個手寫數位影像資料庫)建立一個影像分類模型。讓我們開始吧:
“`蟒蛇
將tensorflow作為tf導入
從tensorflow.keras匯入資料集、圖層、模型
下載 MNIST 資料集
(train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data()
影像歸一化
訓練影像,測試影像 = 訓練影像 / 255.0,測試影像 / 255.0
製作模型
模型 = models.Sequential([
layers.Flatten(input_shape=(28, 28)),
層。
層數.密集(10)
])
模型編譯
模型.編譯(最佳化器='adam',
損失=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
指標=['準確度'])
訓練模型
模型.擬合(訓練影像,訓練標籤,時期=5)
模型測試
test_loss, test_acc = model.evaluate(test_images, test_labels)
print(f'測試準確率:{test_acc}')
“
解釋:
– 資料集:我們匯入並載入 MNIST 資料集。
– 預處理:將像素值除以 255 對資料集進行歸一化。
模型:我們定義了一個包含兩層的簡單模型。第一層是「展平」層,用於將二維影像轉換為一維數組。第二層是「全連結」層,包含 128 個神經元,活化函數為「ReLU」。最後一層也是「全連接」層,包含 10 個神經元,分別代表 10 個類別。
– 編譯:我們使用 `adam` 最佳化器和 `SparseCategoricalCrossentropy` 作為損失函數來編譯模型。
– 訓練:訓練模式 5 個週期。
– 評估:使用測試資料評估模型。
6. 模型保存與載入
模型訓練完成後,您可能希望將其保存以供日後使用,而無需重新訓練。以下是如何保存和載入模型的方法:
“`蟒蛇
保存模型
model.save('my_model.h5')
載入模型
new_model = tf.keras.models.load_model('my_model.h5')
驗證已載入的模型
loss, acc = new_model.evaluate(test_images, test_labels)
print(f'已載入模型的準確度:{acc}')
“
結論
本指南為初學者詳細介紹了 TensorFlow 的入門知識。我們涵蓋了安裝、基本張量操作以及如何使用 MNIST 資料集建立簡單的神經網路模型。 TensorFlow 還提供了許多高級功能供您探索,例如高級資料處理、更複雜的模型以及在 TPU 和 GPU 等設備上使用 TensorFlow。我們希望本教學能幫助您使用 TensorFlow 開啟機器學習之旅。