Fashion MNIST与分类算法

发布于:2022-12-26 ⋅ 阅读:(481) ⋅ 点赞:(0)

1     算法描述

Fashion-MNIST是一个数据集合,由Zalando提供的有关时尚流行的服饰衣物的图像集合,主要用于机器学习,使用该数据集合构建的模型主要用于识别目前时尚流行的服饰衣物。Fashion-MNIST数据集合包括两部分的数据,训练数据集合、测试数据集合,其图片样式如下所示:

由以上的Fashion-MNIST图片可知,从上往下,每个类别包括三行图片,因此,时尚流行的服饰衣物总共分为10个类别,如下所示:

标签

英文描述

中文描述

0

T-shirt/top

T恤/上衣

1

Trouser

裤子

2

Pullover

套头衫

3

Dress

连衣裙

4

Coat

外套

5

Sandal

凉鞋

6

Shirt

衬衫

7

Sneaker

运动鞋

8

Bag

9

Ankle  boot

短靴

其中,Fashion-MNIST图片中每个衣物的图片大小是28*28个像素的大小,而每个像素整数值的范围是0~255之间。

2     算法分析

本章节的算法分析包括两个步骤:Fashion-MNIST文件数据分析与逻辑分析,其中Fashion-MNIST数据文件是由Zalando提供的。

2.1   数据分析

Zalando提供的fashion-mnist数据文件包括如下4个文件,文件描述以及文件内容组织存储的格式如下所示:

t10k-images-idx3-ubyte

该数据文件主要用于机器学习的模型训练,是上图fashion-mnist示例图片的字节码文件,文件内容的组织存储格式描述如下所示:

  • 文件头部的字节长度等于16个字节,其中每4个字节组成一个整数类型,共4个整数类型,第1个整数表示图片列表的数量M,第3个整数表示图片像素的长度W,第4个整数表示图片像素的宽度H

  •  从文件的第17个字节开始,每W*H个字节表示一个图片的字节码列表,每个字节码表示一个像素的无符号数的整数值,其的范围是0到255

train-labels-idx1-ubyte

该数据文件主要用于机器学习中模型训练时,建立图片特征与标签分类的对应关系,保存的标签类型列表与数据文件t10k-images-idx3-ubyte中图片列表对应,数量等于M,如上表所示的共10个标签类型,用0到9的整数数字表示,文件内容的组织存储格式描述如下所示:

  • 文件头部的字节长度等于8个字节,前面4个字节表示标签数量M

  • 从文件的第9个字节开始,每个字节表示每个图片的标签类型,每个字节表示一个标签类型的无符号数的整数值,其范围是0到9

t10k-images-idx3-ubyte

该数据文件主要用于机器学习中模型测试,其文件数据的组织存储格式与t10k-images-idx3-ubyte相同

t10k-labels-idx1-ubyte

该数据文件主要用于机器学习中测试模型时,验证图片特征与标签分类的对应关系,其文件数据的组织存储格式与train-labels-idx1-ubyte相同,文件内容与t10k-images-idx3-ubyte对应

2.2   逻辑分析

使用机器学习中的神经网络模型对fashion-mnist的数据集合进行训练学习与预测分析,机器学习的逻辑分析步骤主要包括读取数据、处理数据、模型构建、模型训练、模型评估、模型优化以及模型预测。

2.2.1 读取数据

该步骤主要是读取fashion-mnist的数据文件,根据数据组织存储格式读取,其中包括:

  • 训练图像数据集合T(t10k-images-idx3-ubyte)

  • 训练图像标签数据集合B(train-labels-idx1-ubyte

  • 测试图像数据集合TT(t10k-images-idx3-ubyte)

  • 测试图像标签数据集合TB(t10k-labels-idx1-ubyte)

2.2.2 处理数据

该步骤主要是对上一步骤的数据集合进行标准化处理,其中包括:

  •  数据集合T的每个图像TE,其中TE中包括W*H个字节,每个字节TEB,标准化处理TEB的算法是转换为TEB/255的浮点类型TEBS,其中TEBS的范围是0到1的浮点类型

  • 数据集合B的每个标签类型BE,其中BE表示一个字节,转换为无符号的整数类型BET,BET的范围是0到9

  • 数据集合TT的处理方式与数据集合T的相同

  •  数据集合TB的处理方式与数据集合B的相同

  • 任何输入的图像数据集合TP用于预测分析

2.2.3 模型构建

Fashion-mnist数据集合使用神经网络模型,神经网络是一种使用分层拟合的分类算法,例如,三层神经网络中,第一层表示格式化神经网络的输入数据,第二层表示使用分类算法对第一层中的神经元进行收敛的拟合计算,并输出为第二层的标签类别,第一层到第二层的分类计算被称之为机器学习,在该机器学习的过程中对分类算法的参数进行多次的递归式优化,学得越多则算法的参数就越准确,例如,算法f(x)中包括参数常数a与b,则计算过程中不断调整a与b的值,使输出更加准确,后续章节中将详细描述神经网络的工程学理论以及神经网络的常用数学算法。Fashion-mnist数据集合的神经网络的分层如下所示:

  •  第一层的处理,将每个图片的每个像素集合W*H重新编排成输入数组

  • 第二层的处理,包括128个神经元的节点

  •  第三层的处理,输出每个节点对应一个包括10个标签分类的数组,取数组中置信度最大者作为目标分类

在神经网络模型的学习过程中涉及到以下几个处理步骤,其描述如下所示:

损失函数

用于优化神经网络相关参数的数学函数

优化器

使用损失函数对参数进行优化的处理操作

指标

用于监测机器学习的模型训练以及模型测试

2.2.4 模型训练

使用构建的神经网络模型NNM对fashion-mnist的数据集合T、标签数据集合B进行模型训练。

2.2.5 模型评估

使用构建的神经网络模型NNM对fashion-mnist的测试数据集合TT、测试标签数据集合TB进行模型测试与评估。

2.2.6 模型优化

2.2.7 模型预测

使用构建的神经网络模型NNM对任何的时尚流行的服饰衣物的图像数据集合TP进行预测分析。

3     算法目标

算法运行的目标是最小化系统资源开销(包括处理器资源开销与内存资源开销)以及最小耗时(算法运行时长)。

4     算法设计

4.1   数据结构设计

使用TensorFlow组件提供的数据结构。

4.2   算法逻辑设计

使用TensorFlow组件提供的神经网络模型NNM,其实现流程如下所示:

  •  使用组件keras.datasets.fashion_mnist读取数据

  • 调用NNM模型的fit方法训练

  • 调用NNM模型的evaluate方法评估

  • 使用NNM模型的predict方法进行预测

5     算法实现

5.1   程序语言

本程序使用python语言实现神经网络模型的机器学习与预测分析。

5.2   程序示例

6     算法验证

本算法验证测试使用代码覆盖率测试方法。

6.1   测试用例

本算法使用Fashion-mnist数据集合进行验证。

6.2   执行用例

测试用例通过率100%,代码覆盖率100%。

7     算法效率

7.1   时间复杂度

由神经网络模型NN确定。

7.2   空间复杂度

由神经网络模型NN确定。

7.3   性能测试

使用tensorflow提供的计算框架的测试结果如下所示:

7.4   算法优化

已经使用tensorflow并行计算优化。


网站公告

今日签到

点亮在社区的每一天
去签到