BasicBlock 和 Bottleneck 是在深度残差网络(ResNet)中使用的两种基本的残差块结构。
BasicBlock(基础块):
- 主要用于 ResNet-18 和 ResNet-34 这样的较浅网络。
- 包含两个卷积层(两个3x3卷积)。
- 输入和输出的通道数相同。
- 每个卷积层后面都有批归一化(Batch Normalization)和 ReLU 激活函数。
class BasicBlock(nn.Module): expansion = 1 def __init__(self, in_channels, out_channels, stride=1, downsample=None): super(BasicBlock, self).__init__() self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=stride, padding=1, bias=False) self.bn1 = nn.BatchNorm2d(out_channels) self.relu = nn.ReLU(inplace=True) self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size=3, stride=1, padding=1, bias=False) self.bn2 = nn.BatchNorm2d(out_channels) self.downsample = downsample def forward(self, x): identity = x out = self.conv1(x) out = self.bn1(out) out

本文介绍了深度残差网络中BasicBlock和Bottleneck两种基本残差块,前者用于浅层网络,后者用于深层网络,通过不同结构优化计算效率并提升性能。
最低0.47元/天 解锁文章
11万+

被折叠的 条评论
为什么被折叠?



