(self,
ndim,
in_channels,
out_channels,
kernel_size=3,
stride=1,
padding=0,
dilation=1,
groups=1,
bias=True,
subm=False,
output_padding=0,
transposed=False,
inverse=False,
indice_key=None,
fused_bn=False)
| 48 | class SparseConvolution(SparseModule): |
| 49 | |
| 50 | def __init__(self, |
| 51 | ndim, |
| 52 | in_channels, |
| 53 | out_channels, |
| 54 | kernel_size=3, |
| 55 | stride=1, |
| 56 | padding=0, |
| 57 | dilation=1, |
| 58 | groups=1, |
| 59 | bias=True, |
| 60 | subm=False, |
| 61 | output_padding=0, |
| 62 | transposed=False, |
| 63 | inverse=False, |
| 64 | indice_key=None, |
| 65 | fused_bn=False): |
| 66 | super(SparseConvolution, self).__init__() |
| 67 | assert groups == 1 |
| 68 | if not isinstance(kernel_size, (list, tuple)): |
| 69 | kernel_size = [kernel_size] * ndim |
| 70 | if not isinstance(stride, (list, tuple)): |
| 71 | stride = [stride] * ndim |
| 72 | if not isinstance(padding, (list, tuple)): |
| 73 | padding = [padding] * ndim |
| 74 | if not isinstance(dilation, (list, tuple)): |
| 75 | dilation = [dilation] * ndim |
| 76 | if not isinstance(output_padding, (list, tuple)): |
| 77 | output_padding = [output_padding] * ndim |
| 78 | |
| 79 | for d, s in zip(dilation, stride): |
| 80 | assert any([s == 1, d == 1]), "don't support this." |
| 81 | |
| 82 | self.ndim = ndim |
| 83 | self.in_channels = in_channels |
| 84 | self.out_channels = out_channels |
| 85 | self.kernel_size = kernel_size |
| 86 | self.conv1x1 = np.prod(kernel_size) == 1 |
| 87 | self.stride = stride |
| 88 | self.padding = padding |
| 89 | self.dilation = dilation |
| 90 | self.transposed = transposed |
| 91 | self.inverse = inverse |
| 92 | self.output_padding = output_padding |
| 93 | self.groups = groups |
| 94 | self.subm = subm |
| 95 | self.indice_key = indice_key |
| 96 | self.fused_bn = fused_bn |
| 97 | |
| 98 | self.weight = Parameter( |
| 99 | torch.Tensor(*kernel_size, in_channels, out_channels)) |
| 100 | if bias: |
| 101 | self.bias = Parameter(torch.Tensor(out_channels)) |
| 102 | else: |
| 103 | self.register_parameter('bias', None) |
| 104 | self.reset_parameters() |
| 105 | |
| 106 | def reset_parameters(self): |
| 107 | init.kaiming_uniform_(self.weight, a=math.sqrt(5)) |
nothing calls this directly
no test coverage detected