首先是导入tensorflow:

import tensorflow as tf
print(tf.__version__)

加载Fashion MNIST数据集:

#加载Fashion MNIST数据集
from tensorflow import keras
fashion_mnist = keras.datasets.fashion_mnist #fashion_mnist数据集
(train_images,train_labels),(test_images,test_labels)=fashion_mnist.load_data()#将数据分成四部分:训练的图片,图片标签,测试的图片,测试的标签

1.查看图片:
运行后可查看要训练/测试的图片,Matplotlib 是一个 Python 的 2D绘图库这里使用到,Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。详情参考菜鸟教程:https://www.runoob.com/matplotlib/matplotlib-pyplot.html

import matplotlib.pyplot as plt
plt.imshow(train_images[1]) #显示第一张训练图片,切分train和test为了验证训练准确度

结果如图,可以看到Fashion MNIST数据集的图片都是28*28的图片
在这里插入图片描述
这里运行如下代码可以查看图片库的信息:

print(test_images.shape)

结果如下,表示图片测试库有10000张图,每张大小为28*28.:
在这里插入图片描述

查看照片灰度值:
在这里插入图片描述
查看测试图片标签:
在这里插入图片描述
2.构建神经元
Sequential 序贯模型序贯模型是函数式模型的简略版,为最简单的线性、从头到尾的结构顺序,不分叉,是多个网络层的线性堆叠。可以通过将层的列表传递给Sequential的构造函数,来创建一个Sequential模型。

model=keras.Sequential()

首先指定尺寸,模型需要知道它所期待的输入的尺寸(shape)。出于这个原因,序贯模型中的第一层(只有第一层,因为下面的层可以自动的推断尺寸)需要接收关于其输入尺寸的信息,后面的各个层则可以自动的推导出中间数据的shape,因此不需要为每个层都指定这个参数。
同时这里使用**keras.layers.Flatten(input_shape=[])**用于将输入层的服装图片二维数据压成一维的数据,一般用再卷积层和全连接层之间(因为全连接层只能接收一维数据,而卷积层可以处理二维数据,就是全连接层处理的是向量,而卷积层处理的是矩阵)原理图:
  
在这里插入图片描述

model.add(keras.layers.Flatten(input_shape=(28,28))) #输入层

下面指定某些 2D 层,例如 Dense,支持通过参数 input_dim 指定输入尺寸,某些 3D 时序层支持 input_dim 和 input_length 参数。
这里构建两层神经元
Dense(128) 是一个具有 128 个隐藏神经元的全连接层
Dense(10) 是一个具有 10 个隐藏神经元的全连接层

model.add(keras.layers.Dense(128,activation=tf.nn.relu))#relu函数小于0的值归0大于0的值不变
model.add(keras.layers.Dense(10,activation=tf.nn.softmax))#作用是将一组数转换成预测的概率,原先数值大的数概率会进一步预测较大,原先数值小的数会概率预测变小,且所有预测的概率之和为1,所以该函数常用于分类问题

relu()函数,线性整流函数(Rectified Linear Unit, ReLU):
在这里插入图片描述
softmax()函数,或称归一化指数函数,是逻辑函数的一种推广。它能将一个含任意实数的K维向量A “压缩”到另一个K维实向量 A’ 中,使得A’ 每一个元素的范围都在(0,1)之间,并且所有元素的和为1。
在这里插入图片描述

详情参考:
https://blog.csdn.net/kevindree/article/details/87365355

在训练模型之前,我们需要配置学习过程,这是通过compile方法完成的,他接收三个参数:

优化器 optimizer:它可以是现有优化器的字符串标识符,如 rmsprop 或 adagrad,也可以是 Optimizer 类的实例。Adam一般来说是收敛最快的优化器
损失函数 loss:模型试图最小化的目标函数。它可以是现有损失函数的字符串标识符,如 categorical_crossentropy 或 mse,也可以是一个目标函数。
评估标准 metrics:对于任何分类问题,你都希望将其设置为 metrics = [‘accuracy’]。评估标准可以是现有的标准的字符串标识符,也可以是自定义的评估标准函数。

训练代码:

train_images=train_images/255#为了使数据尽可能的准,除以255,使数据处于0-1之间
model.compile(optimizer=tf.optimizers.Adam(),loss=tf.losses.sparse_categorical_crossentropy,metrics=['accuracy'])
model.fit(train_images,train_labels,epochs=5)#迭代五次

结果如下:
在这里插入图片描述
测试代码:

test_images_scaled=test_images/255
model.evaluate(test_images_scaled,test_labels)

结果,可以看到loss明显比测试的结果高,准确性没有测试结果高,符合测试结果:在这里插入图片描述
进一步预测待更。。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐