深度学习-瓶颈结构(Bottleneck)

本文介绍ResNet中核心的“Deeper Bottleneck Architectures”(DBA),即Bottleneck结构。该结构通过先降维再升维的方式减少了网络参数数量,使网络更加深入并易于训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 简介
论文:Deep Residual Learning for Image Recognition
ResNet的核心内容之一即“Deeper Bottleneck Architectures”(简称DBA),一言概之,bottleneck是一种特殊的残差结构。
在这里插入图片描述
Resnet论文里的原图如上(即Bottleneck V1 ),左图是普通的残差结构,右图是瓶颈结构。具体而言,block的输入和输出channel_num是一样的(上右图中是256,左图为64),

而在block结构中的channel_num(上右图中是64)是小于输入/输出channel_num(256),很形象。也就是先降维再升维。

2. 作用
换成bottleneck design以后,网络的参数减少了很多,深度也加深了,训练也就相对容易一些。

参考:
深度学习基础–Bottleneck(瓶颈) Architectures

### ResNet中的瓶颈结构及其工作原理 ResNet(深度残差网络)是一种用于解决深层神经网络梯度消失和退化问题的有效架构。其中,**瓶颈结构**是ResNet的一种特殊设计形式,主要用于减少计算开销并提高模型效率。 #### 瓶颈结构的设计理念 瓶颈结构的核心在于通过降低特征维度的方式减少计算量,同时保持甚至提升模型的表现能力。具体而言,这种结构通常由三个卷积层组成: 1. **第一个卷积层**是一个 \(1 \times 1\) 的降维操作,目的是减少通道数从而降低后续运算的复杂度[^2]。 2. **第二个卷积层**是一个标准的 \(3 \times 3\) 卷积核,负责提取局部特征。 3. **第三个卷积层**再次使用 \(1 \times 1\) 卷积核进行升维操作,恢复原始通道数量以便与其他部分相加[^1]。 以下是典型的瓶颈模块代码实现: ```python import torch.nn as nn class Bottleneck(nn.Module): expansion = 4 # 扩展因子定义最终输出通道数为输入通道数的四倍 def __init__(self, in_channels, out_channels, stride=1, downsample=None): super(Bottleneck, self).__init__() self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=1, bias=False) self.bn1 = nn.BatchNorm2d(out_channels) self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size=3, stride=stride, padding=1, bias=False) self.bn2 = nn.BatchNorm2d(out_channels) self.conv3 = nn.Conv2d(out_channels, out_channels * self.expansion, kernel_size=1, bias=False) self.bn3 = nn.BatchNorm2d(out_channels * self.expansion) self.relu = nn.ReLU(inplace=True) self.downsample = downsample def forward(self, x): identity = x out = self.conv1(x) out = self.bn1(out) out = self.relu(out) out = self.conv2(out) out = self.bn2(out) out = self.relu(out) out = self.conv3(out) out = self.bn3(out) if self.downsample is not None: identity = self.downsample(x) out += identity out = self.relu(out) return out ``` 上述代码展示了如何构建一个完整的瓶颈模块,其中包括了三个主要的卷积操作以及批量归一化(Batch Normalization)和激活函数ReLU的应用。 #### 工作原理详解 瓶颈结构的工作流程可以分为以下几个方面: - **降维阶段**: 初始的 \(1 \times 1\) 卷积减少了输入张量的通道数,降低了后续处理所需的资源消耗。 - **特征提取阶段**: 中间的 \(3 \times 3\) 卷积专注于捕捉空间上的局部模式,这是传统 CNN 常见的操作方式。 - **升维阶段**: 最后的 \(1 \times 1\) 卷积重新扩展通道数目至初始大小或者更高水平,确保能够与跳过连接(skip connection)兼容。 此外,ResNet还引入了恒等映射(identity mapping),即所谓的跳跃连接或短路连接(shortcut connections),使得前馈过程中可以直接传递未经修改的信息给后面的层,这极大地缓解了训练超深网络时遇到的各种困难。 #### 实验验证与优势体现 研究表明,在ImageNet数据集上测试不同层数(如50、101、152层)版本的ResNet发现,较深层次的确带来了更低误差率,并且相比其他经典模型(AlexNet,VGG),即使拥有更多堆叠层次却仍维持较低计算成本。 这种特性使ResNet成为现代计算机视觉任务中不可或缺的基础组件之一。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值