tensorflow学习笔记之五(卷积神经网络) -凯发k8官方网
文章目录
- 1. 图片识别问题简介以及经典数据集
- 1.1 图片识别问题简介
- 1.2 经典数据集
- 1. 单通道图片求卷积
- 1.1 基本的图片求卷积
- 1.2 填充的图片求卷积
- 1.3 tensorflow计算卷积
- 2. 三通道图片求卷积
- 3. 池化层
- 4. 小结
- 4.1 输入图片为正方形,卷积核为正方形,单卷积核,单通道
- 4.2 输入图片为正方形,卷积核为正方形,单卷积核,三通道
- 4.3 输入图片为正方形,卷积核为正方形,多卷积核,多通道
- 5.
1. 图片识别问题简介以及经典数据集
1.1 图片识别问题简介
视觉是人类认识世界非常重要的一种知觉。对于人来说,通过视觉来识别手写体数字、识别图片中的物体或者找出图片中人脸的轮廓都是非常简单的任务。但是这对于计算机来说不是一件简单的事情。
图片识别问题希望借助计算机中的程序来处理、分析和理解图片中的内容,使得计算机可以从图片中识别各种不同模式的目标和对象。比如前面的mnist联系就是通过计算机来识别图片中的手写体数字。
1.2 经典数据集
mnist数据集:tensorflow入门数据集
cifar :cifar数据集是一个影响力很大的图像分类数据集。分为cifar-10和cifar-100两个问题,它们都是图像字典项目(visual dictionary)中800万张图片中的一个子集。cifar数据集中的图片是32*32的彩色图片。
imagenet:
无论是mnist还是cifar数据集,相比真实环境有两个最大的问题:
为了更加贴近真实环境下的图像识别问题,由斯坦福大学的李飞飞教授带头整理的imagenet很大程度地解决了这两个问题。
imagenet是一个基于wordnet的大型图像数据库。
目标:抽取一个32323的图片的特征,再将提取的特征喂入到全连接网络。
- 卷积可以认为是一种有效提取图像特征的方法。
- 一般会用一个正方形的卷积核,遍历图片上的每个像素点。图片内的每个像素点,乘以卷积核上相对应的点的权重,求和,在加上偏置。
1. 单通道图片求卷积
1.1 基本的图片求卷积
现在对于一个551的图片,用一个331的卷积核求卷积。
如图所示,计算机会将一张551图片转换为一个55的矩阵,矩阵中的每个值代表其像素点的灰度。现在用一个33的矩阵对其求卷积。
每次求卷积的过程为拿着卷积核在原始图片举证上求卷积。如图中所示,就是
1∗(−1) 0∗0 2∗1 5∗1 4∗0 2∗1 3∗(−1) 4∗0 5∗1 1=11*(-1) 0*0 2*1 5*1 4*0 2*1 3*(-1) 4*0 5*1 1=1 1∗(−1)0∗02∗15∗14∗02∗13∗(−1)4∗05∗11=1
其总体大概过程如图
图片来源于
可以看我们是拿卷积核在原始图片上“滑动”求卷积。
在这里,影响输出矩阵的规格的因素有,原始图片大小,卷积核大小,滑动的步长。
一张图片经过一次卷积操作输出的边长 = ( 输入图片的边长 - 卷积核 1 ) /步长(向上取整)
比如上图中,输出边长 = ( 5 - 3 1 ) / 1 = 3
1.2 填充的图片求卷积
有时候,需要在图片的周围进行填充(有全零填充和其他填充),如下图所示:
那么输出的边长就等于 = 输入长度 / 步长 = 5 / 1 = 5(向上取整)
在tensorflow中,用参数padding = ‘same’(填充) 或者 padding = ‘valid’(未填充) 表示
总的来说,卷积是讲一个矩阵进行信息提取(特征抽取)的作用。参数为卷积核参数3 * 3 = 9个
1.3 tensorflow计算卷积
tf.nn.conv2d(
输入描述: 一次喂入图片数, 图片分辨率(两位),通道数
输出描述: 卷积核分辨率(两位), 通道数,核的个数
核滑动步长,第一个和第四个固定为1。第二三个分别为行步长和列步长。
pading = ‘valid’
)
2. 三通道图片求卷积
在一般情况下,我们遇到的图片都是彩色图片。在计算机中,他们都是三通道图片(三基色原理,rgb红绿蓝)。
所以我们的图片矩阵变成了5 * 5 * 3。此时我们的卷积核变成了3 * 3 * 3 。
3. 池化层
池化的作用:
- 减少特征的数量
- 最大值池化可以提取图片纹理,均值池化可保留背景特征
4. 小结
从计算的角度来看:卷积操作就是矩阵操作。
4.1 输入图片为正方形,卷积核为正方形,单卷积核,单通道
不填充
输出的矩阵边长=输入边长−卷积核边长 1步长输出的矩阵边长 =\frac{输入边长 - 卷积核边长 1}{步长} 输出的矩阵边长=步长输入边长−卷积核边长1
填充
输出的矩阵边长=输入边长步长输出的矩阵边长 =\frac{输入边长 }{步长} 输出的矩阵边长=步长输入边长
在这里有个疑惑,比如卷积核边长为三,填充一层,也就是输入边长 2。输出边长满足上述两个公式。
假如卷积核边长为5。那么是填充一层还是两层?
4.2 输入图片为正方形,卷积核为正方形,单卷积核,三通道
边长与单通道类似
输出通道数可以为1,每个对应的通道数相乘后相加。
可以为3,每个对应的通道数相乘后,相互独立。
也可以为9,输入的每个通道数与卷积核的通道数相乘,再相加。
4.3 输入图片为正方形,卷积核为正方形,多卷积核,多通道
边长与单通道类似
输出通道数
= 卷积核个数,每个对应的通道数相乘后相加。
= 卷积核个数3, 每个对应的通道数相乘后,相互独立。
= 卷积核个数9,输入的每个通道数与卷积核的通道数相乘,再相加。
5.
总结
以上是凯发k8官方网为你收集整理的tensorflow学习笔记之五(卷积神经网络)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: