| 84 | """ |
| 85 | |
| 86 | def __init__(self, in_channels, out_channels, kernel_size, stride=1, |
| 87 | relu=True, bn=True, bn_momentum=0.1, init_method="xavier", **kwargs): |
| 88 | super(Deconv2d, self).__init__() |
| 89 | self.out_channels = out_channels |
| 90 | assert stride in [1, 2] |
| 91 | self.stride = stride |
| 92 | |
| 93 | self.conv = nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=stride, |
| 94 | bias=(not bn), **kwargs) |
| 95 | self.bn = nn.BatchNorm2d(out_channels, momentum=bn_momentum) if bn else None |
| 96 | # self.bn = nn.GroupNorm(8, out_channels) if bn else None |
| 97 | self.relu = relu |
| 98 | |
| 99 | # assert init_method in ["kaiming", "xavier"] |
| 100 | # self.init_weights(init_method) |
| 101 | |
| 102 | def forward(self, x): |
| 103 | y = self.conv(x) |