CNN
CNN
CNN中新出现了卷积层(Convolution)和池化层(Pooling)
- 卷积层用于提取输入数据的局部特征
- 池化层用于降维,增加鲁棒性并防止过拟合
- 全连接层用于整合特征并输出结果
卷积层
在全连接层中,相邻层的神经元全部连接在一起,输出的数量可以任意决定,但是却忽视了数据的形状。比如,输入数据为图像时,图像通常是长、宽、通道方向上的3维数据,但是向全连接输入时却需要将其拉平为1维数据,这种情况下3维形状的数据中的空间信息可能被全连接层忽视掉。
而卷积层可以保持数据形状不变,即接受3维形状的输入数据后同样以3维形状将数据输出至下一层。在CNN中,卷积层的输入输出数据也称为特征图(feature map)
卷积运算:对于输入数据,卷积运算以一定间隔滑动卷积核的窗口并应用。将各个位置上卷积核的元素和输入的对应元素相乘,然后求和(也就是乘积累加求和、矩阵内积)
填充:在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如0)。主要目的是为了调整输出数据的形状大小,避免多次卷积后数据形状大小过小导致无法继续进行卷积运算。运用填充可以令数据形状在经过卷积运算后保持不变。
步幅:应用卷积核的位置称之为步幅
假设输入数据形状为(H,W),卷积核大小为(FH,FW),填充为P,步幅为S,输出数据形状为(OH,OW)
$$
OH=\frac{H+2P-FH}{S}+1
$$
$$
OW=\frac{H+2P-FW}{S}+1
$$
池化层
池化层缩小长、宽方向上的控件来进行降维,能够缩减模型的大小并提高计算速度。
例如,对数据进行步幅为2的2x2的Max池化,就是取池子中的最大值
除了Max池化,还有Average池化
和卷积层不同,池化层没有要学习的参数,并且池化运算按通道独立进行,经过池化运算后数据的通道数不会发生变化。
深层卷积神经网络
AlexNetVGGGoogleNetResNet:为了解决深度网络的梯度消失问题,引入恒等映射称为“残差连接”(或者“跳跃连接”)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WereAsh!
评论
ValineDisqus




