首頁 > 科技週邊 > 人工智慧 > 使用卷積神經網路對手寫數字進行識別

使用卷積神經網路對手寫數字進行識別

PHPz
發布: 2024-01-23 21:03:22
轉載
1116 人瀏覽過

使用卷積神經網路對手寫數字進行識別

MNIST資料集是由手寫數字組成的,包括60,000個訓練樣本和10,000個測試樣本。每個樣本都是28x28像素的灰階影像,表示從0到9的數字。

卷積神經網路(CNN)是深度學習中用於影像分類的模型。它透過卷積層和池化層提取影像特徵,並用全連接層進行分類。

下面我將介紹如何使用Python和TensorFlow實作一個簡單的CNN模型來對MNIST資料集進行分類。

首先,我們需要導入必要的庫和MNIST資料集:

import tensorflow as tf
from tensorflow.keras.datasets import mnist

# 加载MNIST数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data()
登入後複製

接下來,我們需要將圖像資料歸一化並將標籤資料轉換為獨熱編碼格式:

# 归一化图像数据
x_train = x_train / 255.0
x_test = x_test / 255.0

# 将标签数据转换为独热编码格式
y_train = tf.keras.utils.to_categorical(y_train, num_classes=10)
y_test = tf.keras.utils.to_categorical(y_test, num_classes=10)
登入後複製

然後,我們定義CNN模型。這個模型包括兩個卷積層和兩個池化層,以及一個全連接層。我們使用ReLU激活函數,並在最後一層使用Softmax激活函數進行分類。程式碼如下:

model = tf.keras.models.Sequential([
    # 第一个卷积层
    tf.keras.layers.Conv2D(filters=32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)),
    tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),
    # 第二个卷积层
    tf.keras.layers.Conv2D(filters=64, kernel_size=(3, 3), activation='relu'),
    tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),
    # 将特征图展平
    tf.keras.layers.Flatten(),
    # 全连接层
    tf.keras.layers.Dense(units=128, activation='relu'),
    # 输出层
    tf.keras.layers.Dense(units=10, activation='softmax')
])
登入後複製

接下來,我們需要編譯模型並指定損失函數、最佳化器和評估指標:

# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
登入後複製

最後,我們訓練模型並進行測試:

# 训练模型
model.fit(x_train.reshape(-1, 28, 28, 1), y_train, epochs=5, batch_size=32)

# 测试模型
score = model.evaluate(x_test.reshape(-1, 28, 28, 1), y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
登入後複製

在運行完整程式碼後,我們可以看到模型的測試準確率約為99%。

總結一下,使用卷積神經網路對MNIST資料集進行分類的步驟如下:

1.載入MNIST資料集並進行預處理,包括歸一化和獨熱編碼;

2.定義CNN模型,包括卷積層、池化層和全連接層,並指定激活函數;

3.編譯模型,指定損失函數、最佳化器和評估指標;

4.訓練模型,並在測試集上進行測試。

以上是一個簡單的範例,可以根據具體情況進行修改和最佳化。

以上是使用卷積神經網路對手寫數字進行識別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:163.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板