卷積神經網路 (CNN) 是用於影像處理和辨識任務的強大工具。它們被設計為透過反向傳播自動、自適應地學習特徵的空間層次結構。讓我們深入研究使用 Python 和 TensorFlow/Keras 建立基本的 CNN。
開始之前,請確保您已安裝以下程式庫:
pip install tensorflow numpy matplotlib
先導入必要的函式庫:
import tensorflow as tf from tensorflow.keras import layers, models import matplotlib.pyplot as plt
在此範例中,我們將使用 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
現在,讓我們建立 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'])
使用幾個 epoch 的訓練資料訓練 CNN 模型。
history = model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))
訓練後,根據測試資料評估模型,看看它的表現如何。
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2) print(f'\nTest accuracy: {test_acc}')
最後,讓我們可視化訓練時期的準確性和損失。
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中文網其他相關文章!