什么是mnist数据集?

MNIST数据集是格式为(28,28,1)简单服饰鞋数据集。MNIST数据集共有60000张用于训练的数据,对应的有60000个标签。共有10000张用于测试的图片的数据,同样的有10000个标签与之对应。

数据获取与预处理

dataset, metadata = tfds.load('fashion_mnist', as_supervised=True, with_info=True)
dataset, metadata = tfds.load('fashion_mnist', as_supervised=True,with_info=True)
train_dataset, test_dataset = dataset['train'], dataset['test']
class_name = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker','Bag','Ankleboot']
num_train_example=metadata.splits['train'].num_examples num_test_example=metadata.splits['test'].num_examples

为了方便访问,我们先定义一个函数normalize对数据加进行预处理
将像素点转化为浮点型

images = tf.cast(images, tf.float32)

范围标准化到0-1之间

images /= 255

对测试集和训练集的每一个元素通过map都执行一遍normalize(标准化)函数
train_dataset=train_dataset.map(normalize) test_dataset = test_dataset.map(normalize)

我们将训练集打乱并且和测试集一样以32个样本为一组

train_dataset = train_dataset.repeat().shuffle(num_train_example).batch(32)test_dataset = test_dataset.batch(32)

构建模型

moodel = tf.keras.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28, 1)), tf.keras.layers.Dense(128, activation=tf.nn.relu), tf.keras.layers.Dense(10, activation=tf.nn.softmax)])

扁平化层,将多维数据扁平化
tf.keras.layers.Flatten(input_shape=(28, 28, 1))

密集层, 第一个参数是神经单元数量,后一个是激活函数relu(关于激活函数的具体描述,我会在接下来的文章中介绍) tf.keras.layers.Dense(128, activation=tf.nn.relu),

输出 激活函数使用softMax
tf.keras.layers.Dense(10, activation=tf.nn.softmax)])

模型编译

  1. model.compile(optimizer='adam',loss='sparse_categorical_crossentropy', metrics=['accuracy'])

使用了Adam优化器编译模型,可以不用指定学习率# adam还可以作为优化器的参数,损失函数设为sparse_categorical_crossentropy,该损失函数适用于分类任务场景

我们开始训练,迭代训练5次
model.fit(train_dataset, epochs=5, steps_per_epoch=math.ceil(num_train_example / 32))