实现基于卷积神经网络的手写体数字识别
时间: 2024-04-01 12:28:13 浏览: 121
基于卷积神经网络的手写体数字识别是一种常见的图像分类任务。下面是一个使用Python和Keras库实现的示例代码:
```python
import numpy as np
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from keras.utils import to_categorical
# 加载MNIST数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 数据预处理
x_train = x_train.reshape(-1, 28, 28, 1) / 255.0
x_test = x_test.reshape(-1, 28, 28, 1) / 255.0
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
# 构建卷积神经网络模型
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='softmax'))
# 编译和训练模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=10, batch_size=128, validation_data=(x_test, y_test))
# 在测试集上评估模型性能
test_loss, test_acc = model.evaluate(x_test, y_test)
print('Test loss:', test_loss)
print('Test accuracy:', test_acc)
```
这段代码使用了MNIST数据集,其中包含了手写体数字的图像和对应的标签。首先,我们对图像进行预处理,将像素值缩放到0到1之间。然后,我们构建了一个卷积神经网络模型,包括卷积层、池化层和全连接层。最后,我们编译并训练模型,使用测试集评估模型的性能。
阅读全文