引言

神經網絡是人工智能和深度學習的核心技術之一,它模擬了人腦的工作方式,通過大量的訓練數據和計算來解決複雜的任務,如圖像分類、語音識別、自然語言處理等。今天,我們將帶你快速搭建一個簡單的神經網絡,使用 Python 和 Keras 庫,完全不需要理解複雜的數學公式和推導。只要跟着步驟走,你就能順利完成自己的第一個神經網絡!

什麼是 Keras?

Keras 是一個高層次的神經網絡 API,能夠運行在 TensorFlow、Theano 或 CNTK 等深度學習框架之上。它的設計哲學是簡潔、易用,因此非常適合初學者。Keras 提供了許多高層次的接口,可以讓我們很容易地構建神經網絡,而不需要關心底層的細節。

步驟 1:安裝必要的庫

首先,確保你已經安裝了 KerasTensorFlow。可以使用以下命令進行安裝:

pip install tensorflow

Keras 已經被集成在 TensorFlow 中,因此安裝 TensorFlow 即可使用 Keras。

步驟 2:導入庫

在開始構建神經網絡之前,我們需要導入一些基本的庫。

import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.datasets import mnist
  • Sequential 用於構建神經網絡的模型。
  • Dense 是全連接層,我們將使用它來創建網絡的每一層。
  • mnist 是一個經典的手寫數字數據集,用於訓練和測試模型。

步驟 3:加載數據集

我們將使用 MNIST 數據集,它包含了 60,000 個訓練樣本和 10,000 個測試樣本,都是 28x28 像素的手寫數字圖像。每個圖像的標籤表示數字的類別(0 到 9)。

# 加載 MNIST 數據集
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# 數據預處理:將像素值歸一化到 0 到 1 之間
x_train = x_train / 255.0
x_test = x_test / 255.0

# 將輸入數據展開成一維數組(28x28 = 784)
x_train = x_train.reshape(-1, 784)
x_test = x_test.reshape(-1, 784)
  • x_trainx_test 是圖像數據,y_trainy_test 是對應的標籤。
  • 由於每張圖片是 28x28 的矩陣,我們將其展平成一維數組,大小為 784。

步驟 4:構建神經網絡模型

接下來,我們構建一個簡單的神經網絡模型。我們將使用 Sequential 模型,它意味着網絡的層是按順序堆疊的。

# 構建神經網絡
model = Sequential()

# 輸入層:784 個輸入神經元,隱含層 128 個神經元,使用 ReLU 激活函數
model.add(Dense(128, input_dim=784, activation='relu'))

# 輸出層:10 個神經元,對應數字 0 到 9,使用 Softmax 激活函數進行分類
model.add(Dense(10, activation='softmax'))
  • 第一層是輸入層,包含 784 個神經元,對應每張圖片的像素數。該層使用 ReLU 激活函數,ReLU 是最常用的激活函數之一。
  • 第二層是輸出層,包含 10 個神經元,對應數字 0 到 9。我們使用 Softmax 激活函數來確保輸出的結果是一個概率分佈。

步驟 5:編譯模型

在編譯模型時,我們需要指定優化器、損失函數和評估指標。

# 編譯模型
model.compile(optimizer='adam', 
              loss='sparse_categorical_crossentropy', 
              metrics=['accuracy'])
  • adam 是一種常用的優化器,適用於大多數問題。
  • sparse_categorical_crossentropy 是用於多分類問題的損失函數,適合像 MNIST 這樣的任務。
  • accuracy 用於評估模型的準確率。

步驟 6:訓練模型

我們現在可以使用訓練數據來訓練模型了。訓練過程會通過迭代優化神經網絡的參數,使其在訓練集上表現更好。

# 訓練模型
model.fit(x_train, y_train, epochs=5, batch_size=32)
  • epochs=5 表示訓練 5 個週期,每個週期都將所有訓練數據傳遞一次。
  • batch_size=32 表示每次使用 32 個樣本進行訓練。

步驟 7:評估模型

訓練完成後,我們使用測試數據來評估模型的性能。

# 評估模型
test_loss, test_accuracy = model.evaluate(x_test, y_test)
print(f"測試損失:{test_loss}")
print(f"測試準確率:{test_accuracy}")

這段代碼將輸出模型在測試集上的損失值和準確率,幫助我們評估模型的表現。

步驟 8:做出預測

訓練完成後,我們可以使用模型來預測新的數據。

# 預測
predictions = model.predict(x_test)

# 輸出預測結果(第一張圖片的預測標籤)
print(f"預測標籤:{np.argmax(predictions[0])}")

np.argmax 返回預測概率最高的類別,也就是模型認為最可能的數字。

總結

恭喜你!通過這篇教程,你已經學會了如何使用 Python 和 Keras 快速搭建並訓練一個簡單的神經網絡。這個神經網絡能夠識別手寫數字,並在測試數據上做出預測。你不僅瞭解瞭如何使用 Keras 構建模型,還掌握了數據預處理、模型訓練和評估的基本流程。

神經網絡雖然看起來複雜,但實際上使用 Keras 這樣的高層框架,能夠讓我們很容易地搭建和訓練神經網絡。隨着你對深度學習的理解加深,你可以嘗試更復雜的模型,並且擴展到其他領域,比如圖像分類、自然語言處理等。