resnet网络
Resnet简介
Resnet网络在2015年由微软亚洲研究院提出。
Resnet的核心思想是通过引入残差块(residual block)来解决深度神经网络训练过程中的梯度消失和梯度爆炸问题。传统的深度网络中,随着网络层数的增加,梯度信号逐渐减小,导致难以训练。Resnet 引入了跨层连接(skip connection),使得网络可以跨越多个层直接传递信息,从而使得梯度能够更容易地传播。
论文标题:Deep Residual Learning for Image Recognition
论文链接:https://arxiv.org/abs/1512.03385v1
Resnet的基本单元是残差块,其结构如下:
- 输入通过两个卷积层,两个卷积层中间有一个激活函数(通常是 relu)
- 然后将输入与 卷积层的输出进行相加(跨层连接)
- 最后再通过一个激活函数。这个过程中,跳跃连接确保了梯度能够顺利传播。
整个Resnet网络由多个上图的残差块组成,其不同版本(如 ResNet-18、ResNet-34、ResNet-50等)根据网络的深度而命名。更深的网络通常能够提取更复杂的特征,但也需要更多的计算资源。ResNet是许多深度学习应用的基础模型之一,经常作为其他网络模型的backbone网络。
Resnet网络的亮点
- 超深的网络结构(突破1000层)
- 提出残差模块(residual block)
- 使用Batch Normalization加速训练(丢弃dropout)
残差块
在 ResNet 的代码实现中,BasicBlock 和 BottleNeck 是两种不同的残差块结构,它们在网络层次结构和参数量上存在一些差异。
BasicBlock
BasicBlock是Resnet中的基本残差块,由两个卷积层组成,每个卷积层跟一个BN层和一个Relu激活函数。该模块适用于较浅的Resnet模型。
BottleNeck
BottleNeck是Resnet 中的瓶颈残差块,引入1x1的卷积层,用于降低维度,然后进行3x3卷积,最后通过1x1卷积进行升维。这样的设计旨在减少参数量和计算复杂度,适用于深层网络。
Resnet网络结构
不同深度的resnet网络结构如下表所示: