卷积神经网络 minist
时间: 2024-01-16 13:03:41 浏览: 93
卷积神经网络(Convolutional Neural Network,CNN)在图像识别领域有着广泛的应用。其中,MINIST是一个常用的手写数字识别数据集,可以用来演示卷积神经网络的训练和预测过程。
以下是一个使用卷积神经网络对MINIST数据集进行训练和预测的示例代码:
```python
import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
# 加载MINIST数据集
(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 = tf.keras.utils.to_categorical(y_train, num_classes=10)
y_test = tf.keras.utils.to_categorical(y_test, num_classes=10)
# 构建卷积神经网络模型
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=5, batch_size=32, validation_data=(x_test, y_test))
# 在测试集上评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print('Test accuracy:', test_acc)
```
这段代码首先加载MINIST数据集,并进行了数据预处理,将像素值归一化到0到1之间。然后构建了一个简单的卷积神经网络模型,包含了两个卷积层和两个池化层,最后通过全连接层进行分类。模型使用Adam优化器和交叉熵损失函数进行编译,并在训练集上进行了5个epoch的训练。最后,在测试集上评估了模型的准确率。
阅读全文