CNN(卷积神经网络)
-
示意图:
-
网络架构
一个卷积神经网络由若干卷积层、Pooling层、全连接层组成。常用架构模式为:
INPUT -> [[CONV]*N -> POOL?]*M -> [FC]*K -
CONV层输出值的计算
-
步长为1时的公式
其中, 是卷积层输出的feature map,D 是深度 -
动态计算过程
-
-
Pooling层输出值的计算
Pooling层主要的作用是下采样,通过去掉Feature Map中不重要的样本,进一步减少参数数量。Pooling的方法很多,最常用的是Max Pooling。Max Pooling实际上就是在n*n的样本中取最大值,作为采样后的样本值。
常用的还有Mean Pooling——取各样本的平均值。- Max Pooling计算过程:
- Max Pooling计算过程:
ResNet
ResNet全名Residual Network残差网络。
-
问题
因为简单地增加网络层数会导致梯度消失和梯度爆炸,因此,人们提出了正则化初始化和中间的正则化层(Batch Normalization),但是 又引发了另外一个问题——退化问题,即随着网络层数地增加,训练集上的准确率却饱和甚至下降。 -
shortcut connection
ResNet 的核心思想是引入一个所谓的「恒等快捷连接」(identity shortcut connection),直接跳过一个或多个层,如下图所示:扫描二维码关注公众号,回复: 11554318 查看本文章 -
ResNet 架构
DenseNet
Dense Convolutional Network
-
DenseNet的优点
1.减轻了梯度消失
2.加强了feature的传递
3.加强了feature的重用
4.一定程度上减少了参数数列
-
Dense Block
核心思想是Dense Block,在每一个Dense Block中,任何两层之间都有直接的连接,也就是说,网络每一层的输入都是前面所有层输出的并集,而该层所学习的特征图也会被直接传给其后面所有层作为输入。通过密集连接,缓解梯度消失问题,加强特征传播,鼓励特征复用,极大的减少了参数量。
两个Dense Block之间使用Batch+1x1Conv+2x2AvgPool作为transition layer的方式来匹配特征图的尺寸。 这样就充分利用了学习的特征图,而不会使用零填充来增加不必要的外在噪声,或者使用1x1Conv+stride=2来采样已学习到的特征(stride=2会丢失部分学习的特征)。 -
DenseNet的主体框架pytorch在ImageNet数据集上的实现
在每个Dense Block内部采用了密集连接,而在相邻的Dense Block之间采用的时Conv+Pool的方式