搭建一个十分类的卷积神经网络模型用于数字识别,数据集使用MNIST
时间: 2023-09-18 13:08:10 浏览: 39
好的,要搭建一个十分类的卷积神经网络模型用于数字识别,我们可以使用Python深度学习框架TensorFlow来实现。下面是一个简单的模型代码:
```
import tensorflow as tf
from tensorflow.keras import layers
# 加载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
# 定义模型
model = tf.keras.models.Sequential([
layers.Reshape(target_shape=(28, 28, 1), input_shape=(28, 28)),
layers.Conv2D(32, (3, 3), activation='relu'),
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)
])
# 编译模型
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
# 训练模型
model.fit(x_train, y_train, epochs=5, validation_data=(x_test, y_test))
# 评估模型
model.evaluate(x_test, y_test, verbose=2)
```
这个模型使用了两个卷积层和两个池化层,以及两个全连接层。我们将输入数据的形状从原本的(28, 28)变成了(28, 28, 1),并且使用了ReLU作为激活函数。在最后一个全连接层中,我们使用了10个神经元来输出10个类别的概率分布。在训练模型时,我们使用了Adam优化器和SparseCategoricalCrossentropy交叉熵作为损失函数。最后,我们评估了模型在测试集上的表现。