卷积神经网络实现手写数据集的识别代码
时间: 2023-10-15 19:07:20 浏览: 78
MNIST数据集卷积神经网络实现手写数字识别(GUI)
5星 · 资源好评率100%
以下是使用卷积神经网络实现手写数据集识别的Python代码示例:
```python
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import numpy as np
# 加载手写数据集
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# 数据预处理
x_train = x_train.astype("float32") / 255.0
x_test = x_test.astype("float32") / 255.0
x_train = np.expand_dims(x_train, -1)
x_test = np.expand_dims(x_test, -1)
# 构建卷积神经网络模型
model = keras.Sequential(
[
keras.Input(shape=(28, 28, 1)),
layers.Conv2D(32, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Conv2D(64, kernel_size=(3, 3), activation="relu"),
layers.MaxPooling2D(pool_size=(2, 2)),
layers.Flatten(),
layers.Dropout(0.5),
layers.Dense(10, activation="softmax"),
]
)
# 编译模型
model.compile(loss="sparse_categorical_crossentropy", optimizer="adam", metrics=["accuracy"])
# 训练模型
model.fit(x_train, y_train, batch_size=128, epochs=15, validation_split=0.1)
# 在测试集上评估模型
score = model.evaluate(x_test, y_test, verbose=0)
print("Test loss:", score[0])
print("Test accuracy:", score[1])
```
在上述代码中,我们首先加载了手写数字数据集,并进行了数据预处理,将像素值缩放到0到1之间,并将每个图像转换为28x28x1的形状。然后我们构建了一个卷积神经网络模型,包含两个卷积层,两个池化层,一个Flatten层和一个Dense层。最后,我们编译模型,使用adam优化器和稀疏分类交叉熵损失函数进行训练,并使用测试集评估模型的性能。
阅读全文