深度学习——卷积神经网络CNN

这两天看了不少讲卷积神经网络的文章和视频,由于我本人才疏学浅,在学习过程中基本上是一头雾水,导致的结果就是不过幸好,在快要绝望的时候,我在知乎上发现了一篇宝藏文章卷积神经网络CNN完全指南终极版这篇文章非常通俗易懂,本着“说人话”的原则讲解了卷积神经网络,虽然有一些小错误,但是整体上非常适合新手小白,

我的这篇博客只是进行了一些补充,理解以下内容的前提是已经读懂了以上推荐的文章。

卷积层

首先,大多数输入图像都有3个RGB通道,我们可以把不同通道看成观察图片的不同视角,不同的视角或许会忽略某些特征,但也一定会强调某些特征。在只有一个通道的时候,“卷积核”就相当于“filter”,当有多个通道时,每个通道都会对应一个卷积核,而每个“filter”是该区域卷积核的一个集合。
其次,每个filter有且仅有一个输出通道,所以要由卷积核首先在输入数据上滑动,对应不同通道输出不同的处理结果。如图所示:
其中一些卷积核的权重可能更高,它对应的通道数据也会被更加重视(例如:如果红色通道·的卷积核权重更高,filter就会更关注这个通道的特征差异)。
卷积核处理完数据后,形成了三个通道对应的处理结果,接着filter再把它们加在一起形成一个总的通道,如图:

最后,每个filter输出后都要加一个偏置项,如图:
对于多个filter的情况:每个filter通过自己的卷积核集处理数据,并加上偏置项,形成一个最终的单通道输出,并把这些单通道输出组合成一个总输出,它的通道数就等于filter数。这个总输出经过非线性处理后,继续作为输入进入下一个卷积层,然后重复上述过程。

零填充和步幅

正如上文中的gif所展示的,通过卷积操作,我们把5X5的特征矩阵转换成了3X3的特征矩阵,这使得输入数据的边缘被“修建”掉了,针对这个问题,我们提出了零填充这一解决方案。它会使用额外的“假”像素填充边缘,这样使得被修剪的数据是“假”数据,从而使输出和输入大小相同。如图:
但是在有些时候,我们会需要一个尺寸小于输入的输出,例如,当通道数量增加时,我们需要降低特征空间维度。实现目标有两种方法,一种是池化层,一种是步幅。滑动卷积核时,我们会先从左上角开始,每次往左滑动或者往下滑动,我们将每次滑动的行数或列数成为步幅(一般情况下,滑动的行数和列数是相等的)步幅越大,输出尺寸越小。

感受野

感受野是卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上的映射区域大小。计算感受野大小时,忽略了图像边缘的影响,即不考虑零填充的大小,先计算在前一层上的感受野,然后逐渐传递到第一层。

数据计算

输入数据的尺寸:W1xH1xD1
输出数据的尺寸:W2xH2xD2
W2=(W1-F+2P)/S+1
H2=(H1-F+2P)/S+1
D2=K
其中K表示filter数量,F表示filter的尺寸,S表示步幅,P表示零填充数量。
注意:由于参数共享,每个filter有FFD1个权重,卷积层共有FFD1*K个权重和K个偏执

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值