| 351 | return nn.ModuleList(transition_layers) |
| 352 | |
| 353 | def _make_layer(self, block, inplanes, planes, blocks, stride=1): |
| 354 | downsample = None |
| 355 | if stride != 1 or inplanes != planes * block.expansion: |
| 356 | downsample = nn.Sequential( |
| 357 | nn.Conv2d(inplanes, planes * block.expansion, |
| 358 | kernel_size=1, stride=stride, bias=False), |
| 359 | Norm2d(planes * block.expansion, momentum=BN_MOMENTUM), |
| 360 | ) |
| 361 | |
| 362 | layers = [] |
| 363 | layers.append(block(inplanes, planes, stride, downsample)) |
| 364 | inplanes = planes * block.expansion |
| 365 | for i in range(1, blocks): |
| 366 | layers.append(block(inplanes, planes)) |
| 367 | |
| 368 | return nn.Sequential(*layers) |
| 369 | |
| 370 | def _make_stage(self, layer_config, num_inchannels, |
| 371 | multi_scale_output=True): |