| 115 | m.bias.data.zero_() |
| 116 | |
| 117 | def _make_layer(self, block, planes, blocks, shortcut_type, stride=1): |
| 118 | downsample = None |
| 119 | if stride != 1 or self.inplanes != planes * block.expansion: |
| 120 | if shortcut_type == 'A': |
| 121 | downsample = partial( |
| 122 | downsample_basic_block, |
| 123 | planes=planes * block.expansion, |
| 124 | stride=stride) |
| 125 | else: |
| 126 | downsample = nn.Sequential( |
| 127 | nn.Conv3d( |
| 128 | self.inplanes, |
| 129 | planes * block.expansion, |
| 130 | kernel_size=1, |
| 131 | stride=stride, |
| 132 | bias=False), nn.BatchNorm3d(planes * block.expansion)) |
| 133 | |
| 134 | layers = [] |
| 135 | layers.append(block(self.inplanes, planes, stride, downsample)) |
| 136 | self.inplanes = planes * block.expansion |
| 137 | for i in range(1, blocks): |
| 138 | layers.append(block(self.inplanes, planes)) |
| 139 | |
| 140 | return nn.Sequential(*layers) |
| 141 | |
| 142 | def forward(self, x): |
| 143 | x = self.conv1(x) |