首頁  >  文章  >  後端開發  >  用 Python 建構基本的捲積神經網路 (CNN)

用 Python 建構基本的捲積神經網路 (CNN)

WBOY
WBOY原創
2024-08-28 18:33:07870瀏覽

Building a Basic Convolutional Neural Network (CNN) in Python

卷積神經網路 (CNN) 是用於影像處理和辨識任務的強大工具。它們被設計為透過反向傳播自動、自適應地學習特徵的空間層次結構。讓我們深入研究使用 Python 和 TensorFlow/Keras 建立基本的 CNN。

?先決條件

開始之前,請確保您已安裝以下程式庫:

pip install tensorflow numpy matplotlib

?️ 步驟1:導入必要的庫

先導入必要的函式庫:

import tensorflow as tf
from tensorflow.keras import layers, models
import matplotlib.pyplot as plt

?️ 第 2 步:載入並預處理資料集

在此範例中,我們將使用 CIFAR-10 資料集,該資料集由 10 個類別的 60,000 張 32x32 彩色影像組成。

# Load the CIFAR-10 dataset
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()

# Normalize the pixel values to be between 0 and 1
x_train, x_test = x_train / 255.0, x_test / 255.0

?第 3 步:建構 CNN 模型

現在,讓我們建立 CNN 模型。模型將包括關鍵層:卷積層、池化層和密集層。

model = models.Sequential()

# First Convolutional Layer
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))

# Second Convolutional Layer
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))

# Third Convolutional Layer
model.add(layers.Conv2D(64, (3, 3), activation='relu'))

# Flatten the output and add Dense layers
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))

?第四步:編譯模型

編譯模型涉及指定最佳化器、損失函數和訓練期間要監控的指標。

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

?第 5 步:訓練模型

使用幾個 epoch 的訓練資料訓練 CNN 模型。

history = model.fit(x_train, y_train, epochs=10, 
                    validation_data=(x_test, y_test))

?第 6 步:評估模型

訓練後,根據測試資料評估模型,看看它的表現如何。

test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print(f'\nTest accuracy: {test_acc}')

?️ 第 7 步:視覺化訓練結果

最後,讓我們可視化訓練時期的準確性和損失。

plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label = 'val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.ylim([0, 1])
plt.legend(loc='lower right')
plt.show()

?結論

這個基本的 CNN 模型是處理影像分類任務的一個很好的起點。透過理解和修改此模型,您可以嘗試不同的架構和技術來增強模型的效能。繼續探索和調整層以建立更強大的神經網路! ?


這段程式碼的設計易於理解和修改,適合初學者和希望開始使用 Python 學習 CNN 的人。

CNN 架構的部落格連結:https://dev.to/abhinowww/demystifying-cnn-neural-network-layers-a-deep-dive-into-ai-architecture-12d2

以上是用 Python 建構基本的捲積神經網路 (CNN)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn