卷积神经网络基本概念
- 数字1处:一个圈表示一个神经元
- 数字2处:一个圈表示一个神经元,圈的大小表示感受野的大小
1. 感受野
- 感受野:表示扫描图片的范围大小
- 感受野越大,图片扫描的范围越大,感受野越小,图片扫描的范围越小
- 感受野的大小与卷积核的大小一致
2. 卷积核
- 卷积核的大小与感受野的大小一致
- 卷积核是需要求的参数w
- 卷积核的大小通常为
3*3
,5*5
,7*7
- 卷积核个数根据自己的需求设置
3. 特征图【feature map】
-
特征图的值相当于从不同的角度观看图片
-
输出特征图的大小与卷积核的大小一致
-
image
5*5
,相当于是5*5
大小的图片 -
filter
3*3
,表示卷积核的大小为3*3
,即感受野为3*3
-
特征图=卷积核与感受野点积+bias
- 例如计算4的过程
x = x 1 ∗ y 1 + x 2 ∗ y 2 + x 3 ∗ y 3 + x 4 ∗ y 4 + x 5 ∗ y 5 + x 6 ∗ y 6 + x 7 ∗ y 7 + x 8 ∗ y 8 + x 9 ∗ y 9 + b i a s = 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 1 + 0 = 4 \begin{aligned} x&=x1*y1+x2*y2+x3*y3+x4*y4+x5*y5+x6*y6+x7*y7+x8*y8+x9*y9+bias \\&=1+0+1+0+1+0+0+0+1+0 \\&=4 \end{aligned} x=x1∗y1+x2∗y2+x3∗y3+x4∗y4+x5∗y5+x6∗y6+x7∗y7+x8∗y8+x9∗y9+bias=1+0+1+0+1+0+0+0+1+0=4
- 例如计算4的过程
4. 通道【channel】
- 1个图片的通道有3个,分别为
rgb
,如果图片还有透明度属性,通道为4,为rgba
- 一个通道有一个自己2维的卷积核
- 如图,1个图片有三个通道,分别为x[:,:,0],x[:,:,1],x[:,:,2]
- 一个通道有一个2维卷积核,上图的卷积核大小为
3*3*3
,3*3
是自己设置的大小,再乘3表示有三个通道 - 卷积核个数自己设置,上图设置了2个卷积核
- 上图中6的计算步骤
x = x w + b i a s = ( 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 ) + ( 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 ) + ( 0 + 0 + 0 + 0 + 2 + 0 + 0 − 1 + 0 ) + 1 = 6 \begin{aligned} x&=xw+bias \\&=(0+0+0+0+0+0+0+2+2)+(0+0+0+0+0+0+0+0+0)+(0+0+0+0+2+0+0-1+0)+1 \\&=6 \end{aligned} x=xw+bias=(0+0+0+0+0+0+0+2+2)+(0+0+0+0+0+0+0+0+0)+(0+0+0+0+2+0+0−1+0)+1=6
5. 填充【padding】
- zero padding【0填充】
- VALID
- 不填充,有可能会忽略图片右侧或底下,这个需要看stride的设置
- SAME
- 填充,这种情况下,输出神经元个数等于输入神经元个数除以步长
6. 步长【stride】
- 扫描图片的步长,当stride为2,表示每次扫描一次平移2个步长
7. 池化【pooling】
- 目的就是降采样subsample,减少计算负荷,内存使用,参数数量(也可防止过拟合)
- 减少输入图片大小也使得神经网络可以经受一点图片平移,不受位置的影响
- 池化神经元没有权重值【不需要计算参数】,它只是聚合输入根据取最大或者是求均值
- 通常使用最大池化,因为我们就是要保留最大特征,如果用平均池化会把最大特征平均掉,特征会变得不明显,不是我们想要的结果
- 池化类型
- 最大池化,取池化核的最大值, 如图,最大值为5
- 平均池化,取池化核的平均值,如图,平均值就为(1+5+3+2)/4
8. dropout
- 在每一次训练步骤中,每个神经元【包括输入神经元,但是不包括输出神经元】,有一个概率神经元被临时丢掉,意味着它将被忽视在整个这次训练步骤中,但是有可能下次再被激活
- 超参数dropout rate,一般设置50%,在训练之后,神经元不会再被dropout