mnist是机器学习经典数据集,包含几万张28x28的手写数字灰度图
本例程展示如何通过tensorflow定义神经网络模型学习区分手写数字0-9,并验证模型的准确度
# tf版本2.4
import tensorflow as tf
import numpy as np
import os
#加载数据集
f = np.load(os.path.join(os.path.expanduser(
'~'), 'Lepi_Data/dataset/mnist.npz'))
x_train, y_train = f['x_train'], f['y_train']
x_test, y_test = f['x_test'], f['y_test']
#定义模型架构
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28, 28)))
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(10, activation=tf.nn.softmax))
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
#打印模型基本参数
print(model.summary())
#开始训练
model.fit(x_train, y_train, epochs=10, batch_size=64)
#数据验证,打印在验证集上的准确率
val_loss, val_acc = model.evaluate(x_test, y_test)
print(val_loss, val_acc)
#保存模型,后续可用tensorflow.keras.models.load_model加载
model.save('mnist_model.h5')