python编程:尝试构建一个简单的卷积神经网络对MNIST手写数据集进行识别,并拍摄自己手写的数字作为测试集,输入到模型中预测,并将结果可视化展示。
时间: 2024-02-22 14:00:58 浏览: 63
基于卷积神经网络实现MNIST手写数字数据集识别应用+GUI可视化源码+数据(课程设计).zip
5星 · 资源好评率100%
好的,以下是一个简单的卷积神经网络对MNIST手写数据集进行识别的Python代码,可以用来参考:
```python
import tensorflow as tf
from tensorflow.keras import layers
import numpy as np
import matplotlib.pyplot as plt
# 加载MNIST数据集
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 归一化数据并将标签转换为独热编码
x_train, x_test = x_train / 255.0, x_test / 255.0
y_train, y_test = tf.one_hot(y_train, 10), tf.one_hot(y_test, 10)
# 定义卷积神经网络模型
model = tf.keras.Sequential([
layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)),
layers.MaxPooling2D((2, 2)),
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dense(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)
# 使用测试集评估模型
model.evaluate(x_test.reshape(-1, 28, 28, 1), y_test)
# 读取自己手写的数字图片
img = plt.imread('test.jpg')
img = np.mean(img, axis=2) / 255.0
img = np.expand_dims(img, axis=-1)
img = np.expand_dims(img, axis=0)
# 使用模型进行预测
pred = model.predict(img)
print('预测结果为:', np.argmax(pred))
# 可视化预测结果
plt.imshow(img[0], cmap='gray')
plt.title('Prediction: {}'.format(np.argmax(pred)))
plt.show()
```
在执行该代码之前,需要先下载MNIST数据集,并将自己手写的数字图片保存在当前目录下,并将文件名命名为“test.jpg”。
这段代码定义了一个简单的卷积神经网络模型,使用MNIST数据集进行训练,并使用手写数字图片进行预测和可视化展示。
阅读全文