def _make_layer(self, block, planes, blocks, stride=1,
batch_norm=True):
downsample = None
if self.shortcut == 'C' or \
self.shortcut == 'B' and \
(stride != 1 or self.inplanes != planes * block.expansion):
downsample = [nn.Conv2d(self.inplanes, planes * block.expansion,
kernel_size=1, stride=stride, bias=not batch_norm)]
if batch_norm:
downsample.append(nn.BatchNorm2d(planes * block.expansion))
downsample = nn.Sequential(*downsample)
else:
downsample = PlainDownSample(
self.inplanes, planes * block.expansion, stride)
layers = []
layers.append(block(self.inplanes, planes,
stride, downsample, batch_norm))
self.inplanes = planes * block.expansion
for i in range(1, blocks):
layers.append(block(self.inplanes, planes, batch_norm=batch_norm))
return nn.Sequential(*layers)
评论列表
文章目录