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之间。
本章节的算法分析包括两个步骤:Fashion-MNIST文件数据分析与逻辑分析,其中Fashion-MNIST数据文件是由Zalando提供的。
Zalando提供的fashion-mnist数据文件包括如下4个文件,文件描述以及文件内容组织存储的格式如下所示:
t10k-images-idx3-ubyte |
该数据文件主要用于机器学习的模型训练,是上图fashion-mnist示例图片的字节码文件,文件内容的组织存储格式描述如下所示:
|
train-labels-idx1-ubyte |
该数据文件主要用于机器学习中模型训练时,建立图片特征与标签分类的对应关系,保存的标签类型列表与数据文件t10k-images-idx3-ubyte中图片列表对应,数量等于M,如上表所示的共10个标签类型,用0到9的整数数字表示,文件内容的组织存储格式描述如下所示:
|
t10k-images-idx3-ubyte |
该数据文件主要用于机器学习中模型测试,其文件数据的组织存储格式与t10k-images-idx3-ubyte相同 |
t10k-labels-idx1-ubyte |
该数据文件主要用于机器学习中测试模型时,验证图片特征与标签分类的对应关系,其文件数据的组织存储格式与train-labels-idx1-ubyte相同,文件内容与t10k-images-idx3-ubyte对应 |
使用机器学习中的神经网络模型对fashion-mnist的数据集合进行训练学习与预测分析,机器学习的逻辑分析步骤主要包括读取数据、处理数据、模型构建、模型训练、模型评估、模型优化以及模型预测。
该步骤主要是读取fashion-mnist的数据文件,根据数据组织存储格式读取,其中包括:
训练图像数据集合T(t10k-images-idx3-ubyte)
训练图像标签数据集合B(train-labels-idx1-ubyte
测试图像数据集合TT(t10k-images-idx3-ubyte)
测试图像标签数据集合TB(t10k-labels-idx1-ubyte)
该步骤主要是对上一步骤的数据集合进行标准化处理,其中包括:
数据集合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用于预测分析
Fashion-mnist数据集合使用神经网络模型,神经网络是一种使用分层拟合的分类算法,例如,三层神经网络中,第一层表示格式化神经网络的输入数据,第二层表示使用分类算法对第一层中的神经元进行收敛的拟合计算,并输出为第二层的标签类别,第一层到第二层的分类计算被称之为机器学习,在该机器学习的过程中对分类算法的参数进行多次的递归式优化,学得越多则算法的参数就越准确,例如,算法f(x)中包括参数常数a与b,则计算过程中不断调整a与b的值,使输出更加准确,后续章节中将详细描述神经网络的工程学理论以及神经网络的常用数学算法。Fashion-mnist数据集合的神经网络的分层如下所示:
第一层的处理,将每个图片的每个像素集合W*H重新编排成输入数组
第二层的处理,包括128个神经元的节点
第三层的处理,输出每个节点对应一个包括10个标签分类的数组,取数组中置信度最大者作为目标分类
在神经网络模型的学习过程中涉及到以下几个处理步骤,其描述如下所示:
损失函数 |
用于优化神经网络相关参数的数学函数 |
优化器 |
使用损失函数对参数进行优化的处理操作 |
指标 |
用于监测机器学习的模型训练以及模型测试 |
使用构建的神经网络模型NNM对fashion-mnist的数据集合T、标签数据集合B进行模型训练。
使用构建的神经网络模型NNM对fashion-mnist的测试数据集合TT、测试标签数据集合TB进行模型测试与评估。
无
使用构建的神经网络模型NNM对任何的时尚流行的服饰衣物的图像数据集合TP进行预测分析。
算法运行的目标是最小化系统资源开销(包括处理器资源开销与内存资源开销)以及最小耗时(算法运行时长)。
使用TensorFlow组件提供的数据结构。
使用TensorFlow组件提供的神经网络模型NNM,其实现流程如下所示:
使用组件keras.datasets.fashion_mnist读取数据
调用NNM模型的fit方法训练
调用NNM模型的evaluate方法评估
使用NNM模型的predict方法进行预测
本程序使用python语言实现神经网络模型的机器学习与预测分析。
本算法验证测试使用代码覆盖率测试方法。
本算法使用Fashion-mnist数据集合进行验证。
测试用例通过率100%,代码覆盖率100%。
由神经网络模型NN确定。
由神经网络模型NN确定。
使用tensorflow提供的计算框架的测试结果如下所示:
已经使用tensorflow并行计算优化。