【深度学习实战】使用卷积神经网络(LeNet-5)对mnist数据集进行多分类
·
1. 步骤
- 数据加载
- 数据处理
- 模型构建
- 模型编译
- 模型训练
- 模型评估
2. 实现
2.1 数据加载
# 导入工具包
import tensorflow as tf
from tensorflow.keras.datasets import mnist
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train.shape
y_train.shape
X_test.shape

2.2 数据处理

# 训练集数据
X_train = tf.reshape(X_train, (X_train.shape[0], X_train.shape[1], X_train.shape[2], 1))
# 测试集数据
X_test = tf.reshape(X_test, (X_test.shape[0], X_test.shape[1], X_test.shape[2], 1))
X_train.shape

2.3 模型构建

net = tf.keras.models.Sequential([
# 卷积层(6个5x5的卷积核)
tf.keras.layers.Conv2D(filters=6, kernel_size=5, activation='sigmoid', input_shape=(28, 28, 1)),
# 最大池化
tf.keras.layers.MaxPool2D(pool_size=2, strides=2),
# 卷积层(16个5*5的卷积核)
tf.keras.layers.Conv2D(filters=16, kernel_size=5, activation='sigmoid'),
# 最大池化
tf.keras.layers.MaxPool2D(pool_size=2, strides=2),
# 维度调整为1维数据
tf.keras.layers.Flatten(),
# 全卷积层
tf.keras.layers.Dense(120, activation='sigmoid'),
tf.keras.layers.Dense(84, activation='sigmoid'),
tf.keras.layers.Dense(10, activation='softmax')
])
- 查看网络结构:


2.4 模型编译
# 设置优化器、损失函数、评价指标
net.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=0.9),
loss=tf.keras.losses.sparse_categorical_crossentropy,
metrics=['accuracy'])
2.5 模型训练
net.fit(X_train, y_train, epochs=5, batch_size=128, verbose=1)

2.6 模型评估
net.evaluate(X_test, y_test, verbose=1)

所有评论(0)