当前课程知识点:计算思维与人工智能基础 > 第三部分:python基础 > 第十章:实例分析与实践 > 10.6卷积神经网络的实现服饰图片的分类
下面我们给大家介绍一下卷积神经网络CNN模型的搭建
训练和预测
我们
在使用CNN模型训练的时候
使用的数据集
还是我们前面给他介绍的
Fashion mnist的
所以我们前面的地方做的工作是一样
我们要运作
Tensorflow的框架以及相关的数据包那么倒进来第一步
那么第二部
我们要把我们用的数据集
Fashion mnist导入
那么第三部
我们也需要给画图的时候给我们买零到九个
每类的标签放到列表里
那么再下面
现在需要做归一化的处理
是样子的
那在下一步
我们就可以看一下我们搭建的过程
那我们首先呢
我们可以看到我们读进来的数据及测试的图片和验证的
训练的图片和测试的图片
都是六万张
28乘28像素的
那么测试的图片是一万张
28乘28像素
那么
在做构建卷积神经网络成
我们需要对
我们的输入的矩阵
要和测试的矩阵的需要进行维度的转换
我们把它转换成
多增加一个维度
那么多增加一个维度
那我们在这个后面
前面这个负一是任意的
后面再加维度
把它转换成我们要的矩阵的结构
那下面的我们CNN模型的搭建
CNN模型搭建
那么首先通过Sequential来构建一下整个堆叠式网络的结构
那么第一层的我们的卷基层
那么输入一张图片
然后这个就是
卷积核的个数
我们的卷积核的尺寸
那么卷积的过程的时候滑动的不长
是我们填充的方式
那么在里面的使用的激活函数路
第一层我们的卷积层
第二层是我们的号码池化层
那么池化里面我们只定义了池化的尺寸
然后呢
我们再下面一层的是把它stretching
把它拉伸拉平
那么
因为我们卷积是在二维的
矩阵上
二维的矩阵上在卷
那么池化
那么把它拉成什么
拉成一维的
然后做成全连接的网络
那么用ReLU函数
他们中间层的神经元是三十二个
咱们最后输出呢
是我们
因为是零到九十个分类
我们用的计划还是softmax函数
那么这个就是我们卷积神经网络的搭建
下面的我们需要在编译的时候设置一些是他常用的优化器的使用的损失函数以及
我们的准确率
这个里面我们先执行我们模型的搭建
模型搭建好了
我们以后
是模型的编译
通过model.fit来看一下我们
模型的参数需要多少参数来进行训练
那么看卷积层需要的参数320比我们前面讲的全连接的网络的参数要小很多
那么池化是不需要拉伸也是不需要
那么全连接的时候第一个全连接层是需要173088个参数
第二个第二层的全连接层要330
一共是17万多的参数
需要训练
那么我们构建好了
然后我们设计好了
在我们训练时候的优化器函数以及准确率
那下面的就可以进行训练
那么通过model.fit
那么是我们的训练题训练标签
那我们是
batch size p
然后呢
训练的轮数
那么有效的数据是90%
我们可以把他的训练的
训练后的些参数都放到history里面
我们来运行一下
这是我们模型的训练
训练两批
那么我们的有效的是
这里面valit split分开以后我们可以看到一共六万个
训练的图片
那么在训练的时候
我们用的样本是
通过我们设定一个valit split参数
他就可以把零点一
把它分离出来
然后92%零点九的五万四千张
图片作为我们的训练图片
那么训练的过程中
我们可以看到他有损失
得到
准确率
还有valit
我们的验证的损失
然后呢
验证的
准确率
我们这些值呢
我们model.fit
是给到了我们的history
那么history里面就把些参数就可以存储
我们可以通过
像我们
像我们字典的方式
像这样的方式来存储
那么可以看训练了以后呢
我们得到的准确率
我们第二次比第一轮会更高一些
那么多训练几轮的话
它的准确率还可以再提高
那我们比如说在地方呢
我们再训练一次
相当于在现在的基础上再进行训练
它可以更好的去提高准确率
所以我们可以说到history的话
它就像
像我们的字典一样去存储
那我们historyi下面对准确率和验证的准确率
或者是我们的损失和验证的损失
我们就可以通过图来去描述
你可以看的到
蓝色的是我们的训练
训练的上升的准确率
上升的过程
那我们的验证
是两个图可以看到
卷积神经网络
那么训练和验证的准确率
它的斜率是有所不同的
那么在训练完了以后呢
我们对我们的准确率做一个评估
我们可以看到评估
其实用我们的测试集来评估我们前面训练的模型的参数的使用的情况
得到测试的准确率是零点8831
88%点多
那我们再把
所有的测试集预测一下结果放到
predictions
那么它也是列表
放到列表里
那么放到里面以后呢
我们就可以单个的去预测
比如说我们预测的下标为一的
那么它是第二分类
这是test测试样本的预测出来
我们可以看到测试样本的标签是不是与之对应
那么与之对应的是二
那么第二个分类
我们也可以看一下我们给它的标签
那么就说标签是
这是一个套头衫
那么可以再做分类
比如说我要看第十一个
那么第十一个测试出来是第五类
我们看到准确不准确
可以看到他是准确的
然后呢
第十一类对应的是我们的
是我们的三种凉鞋
下面我们以图像的方式查看一下我们的预测的结果
那我们首先需要编译
两个
函数
一个是用来画图片的
一个是用来画预测的结果的
我们来展示图片里面预测的i
这是我们的预测的列表
那么真实的标签和图片
在这个里面呢
需要把我们这些预测的列表
真实的标签以及对应的图片
把它们放到我们相应的
传进来的参数
把它放到我们变量里面
下面就是我们对图的设置
图片的展示
那么在这个里面的话
我们预测的图片跟通过array max转换的
我们实际的标签的类如果相等的话
我们这时候就用蓝色就表示
否则的话就用红色的表示
我们输出的时候
我们的class names
那么预测的class names
我们的预测的分类的百分比
下面是它的
真实的标签
那么真实的标签我们这里面的
测试给定的标签
设置成我们这个地方
如果是准确的话
用蓝色
不准确的话用红色标示
在下面的话
我们预测的
我们的百分比用bar来去描述
那么进来的时候也是我们预测的标签
下标以及预测的列表和我们的真实的标签
那么在这个里面的也是图前面的设置
那么主要是用bar来去展示
设定的是灰色
那么预测的
那么预测的列表
列表因为是零到九
那么每个标签的概率是不一样的
那么在里面的话零到一之间把它进行展示
那么展示的时候呢
最后呢
我们可以看得到设置
那么如果他是和我们的预测的标签和我们的真实的标签都设置成
红色的那么如果是一样的话
那么真是标签跟预测的标签一样的话
我们再设置成蓝色
如果是一样的话
它就都设置成蓝色
如果不一样的话
那么就有红的
是这样的结果
我们运行一下
我们再来看一张图片
刚才下标为一的图片
预测出来的结果
我们可以看的到
这是图片
这是下面的
它的名称
它的产量预测的百分比那么真实的标签也是这个
这是我们的套头衫
那么在这个地方
他的预测的概率
是百分之百
那么再看另外一个
刚才的12
那么在地方的话
是红色的
就表示我们的预测是不准确的
那么是预测的是2%
那么实际的是
sneaker
那么用柱状图去描述我们预测的真实的bar呢
应该是
但是呢
我们预测出来的bar的数据是这个
bar的描述是红的
也可以同时我们设置一下预测多行多列的
那我们可以看的到
是五行三列
那么这个里面呢
我们可以
用刚才方式一样展示
只不过用了循环
循环都可以多展示几列
看一下多个图片的预测结果
我们看预测出来以后
准确的我们看很一目了然
那么蓝色的柱子就说明是准确
那么有蓝色有红色的就说明不准确
我们可以看我们的预测的概率是88%
从15个图片里面
我们可以看的到
但一个是不准确
那么大部分还是准确率
在训练的话还可以再提高的
那么这个内容请大家回去
按照这样的搭建
自己多训练几遍
我们可以看到最高可以达到多少呢
请大家下去自己去做一下
好的
我们关于CNN的搭建以及训练预测就给大家介绍到这
-章测试
-章测试
-第一章:python简介
--章测试
-第二章:编码规范
--2.2常量和变量
--章测试
-第三章:数据类型
--章测试
-第四章:基本运算
--4.2比较运算符
--4.3逻辑运算符
--4.4位运算符
--章测试
-第五章:程序控制结构
--5.1顺序结构
--5.2条件结构
--5.3循环结构
--5.4跳转结构
--5.5异常处理
--章测试
-第六章:函数、模块与面向对象
--6.2面向对象
--6.4模块与包
--章测试
-第七章:文件操作
--7.2文件的写入
--章测试
-第八章:python生态库
--章测试
-第九章:TensorFlow基础
--章测试
-第十章:实例分析与实践
--章测试
-第十一章:人工智能在自然语言中的应用
--章测试