采用卷积神经网络(CNN)进行MNIST数据集分类
时间: 2023-11-26 20:04:46 浏览: 85
MNIST数据集是机器学习领域中经典的数据集之一,包含了60000个训练样本和10000个测试样本,每个样本是一个28x28像素的手写数字图像,标签为0-9中的一个数字。采用卷积神经网络(CNN)进行MNIST数据集分类,可以达到较高的准确率。
以下是一个简单的CNN模型,包含两个卷积层和两个全连接层:
```python
import tensorflow as tf
from tensorflow.keras import layers
# 定义模型
model = tf.keras.Sequential([
layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)),
layers.MaxPooling2D((2,2)),
layers.Conv2D(64, (3,3), activation='relu'),
layers.MaxPooling2D((2,2)),
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dense(10, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 训练模型
model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
```
在这个模型中,我们使用了两个卷积层和两个池化层来提取图像的特征,然后使用两个全连接层将特征映射到输出类别。训练过程中,我们采用了Adam优化器和交叉熵损失函数,并在每个epoch结束时计算了模型在测试集上的准确率。
经过10个epoch的训练,我们得到了一个在测试集上准确率为99%左右的模型。这个准确率已经非常接近于MNIST数据集的最高准确率了,说明CNN在图像分类任务中的表现非常优秀。
阅读全文