| 52 | |
| 53 | |
| 54 | class NetworkBlock(nn.Module): |
| 55 | def __init__(self, nb_layers, in_planes, out_planes, block, stride, drop_rate=0.0, activate_before_residual=False): |
| 56 | super(NetworkBlock, self).__init__() |
| 57 | self.layer = self._make_layer( |
| 58 | block, in_planes, out_planes, nb_layers, stride, drop_rate, activate_before_residual) |
| 59 | |
| 60 | def _make_layer(self, block, in_planes, out_planes, nb_layers, stride, drop_rate, activate_before_residual): |
| 61 | layers = [] |
| 62 | for i in range(int(nb_layers)): |
| 63 | layers.append(block(i == 0 and in_planes or out_planes, out_planes, |
| 64 | i == 0 and stride or 1, drop_rate, activate_before_residual)) |
| 65 | return nn.Sequential(*layers) |
| 66 | |
| 67 | def forward(self, x): |
| 68 | return self.layer(x) |
| 69 | |
| 70 | |
| 71 | class WideResNetVar(nn.Module): |