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([
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),
tf.keras.layers.Conv2D(filters=16, kernel_size=5, activation='sigmoid'),
tf.keras.layers.MaxPool2D(pool_size=2, strides=2),
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)