def __init__(self, in_channels, out_channels, kernel_size=3, stride=1, dilation=1, bias=False, transpose=False): super().__init__() self.in_channels = in_channels self.out_channels = out_channels self.kernel_size = make_list(kernel_size, 4) self.stride = make_list(stride, 4) self.dilation = make_list(dilation, 4) if isinstance(self.kernel_size, str): if self.kernel_size == 'hypercross': self.kernel = nn.Parameter(torch.zeros(9, in_channels, out_channels)) else: raise NotImplementedError elif np.prod(self.kernel_size) > 1: self.kernel = nn.Parameter(torch.zeros(np.prod(self.kernel_size), in_channels, out_channels)) else: assert not transpose self.kernel = nn.Parameter(torch.zeros(in_channels, out_channels)) self.bias = None if not bias else nn.Parameter(torch.zeros(out_channels)) self.t = transpose self.init_weight() if kernel_size == 1: assert not transpose
def __init__(self, in_channels, out_channels, kernel_size=3, stride=1, dilation=1, bias=False, transpose=False): super().__init__() self.in_channels = in_channels self.out_channels = out_channels self.kernel_size = make_list(kernel_size) self.stride = make_list(stride) self.dilation = make_list(dilation) if np.prod(self.kernel_size) > 1: self.kernel = nn.Parameter(torch.zeros(np.prod(self.kernel_size), in_channels, out_channels)) else: assert not transpose self.kernel = nn.Parameter(torch.zeros(in_channels, out_channels)) self.bias = None if not bias else nn.Parameter(torch.zeros(out_channels)) self.t = transpose self.init_weight()
def __init__(self, in_channels, out_channels, kernel_size=3, stride=1, dilation=1, bias=False, transpose=False): super().__init__() self.in_channels = in_channels self.out_channels = out_channels self.kernel_size = make_list(kernel_size) self.stride = make_list(stride) self.dilation = make_list(dilation) assert(np.prod(kernel_size) > 1) assert(not transpose) self.kernel = nn.Parameter(torch.zeros(np.prod(self.kernel_size), in_channels, out_channels)) self.bias = None if not bias else nn.Parameter(torch.zeros(out_channels)) self.pkernel = nn.Parameter(torch.zeros(np.prod(self.kernel_size), in_channels, 3 * np.prod(self.kernel_size))) self.pkernel.register_hook(self._set_lr) self.init_weight()
def __init__( self, kernel_size, stride, dilation, ): if isinstance(kernel_size, str): if kernel_size == 'hypercross': self.stride = make_list(stride, 4) self.dilation = make_list(dilation, 4) kernel_offset = np.array([[0, 0, 0, 0], [1, 0, 0, 0], [-1, 0, 0, 0], [0, 1, 0, 0], [0, -1, 0, 0], [0, 0, 1, 0], [0, 0, -1, 0], [0, 0, 0, 1], [0, 0, 0, -1]]) kernel_offset *= self.stride * self.dilation else: raise NotImplementedError else: self.kernel_size = make_list(kernel_size, 4) self.stride = make_list(stride, 4) self.dilation = make_list(dilation, 4) t_offset = (np.arange(-self.kernel_size[0] // 2 + 1, self.kernel_size[0] // 2 + 1) * self.stride[0] * self.dilation[0]).tolist() x_offset = (np.arange(-self.kernel_size[1] // 2 + 1, self.kernel_size[1] // 2 + 1) * self.stride[1] * self.dilation[1]).tolist() y_offset = (np.arange(-self.kernel_size[2] // 2 + 1, self.kernel_size[2] // 2 + 1) * self.stride[2] * self.dilation[2]).tolist() z_offset = (np.arange(-self.kernel_size[3] // 2 + 1, self.kernel_size[3] // 2 + 1) * self.stride[3] * self.dilation[3]).tolist() kernel_offset = np.array([[t, x, y, z] for t in t_offset for z in z_offset for y in y_offset for x in x_offset]) self.kernel_offset = torch.from_numpy(kernel_offset).int()
def __init__(self, kernel_size, stride, dilation): self.kernel_size = make_list(kernel_size, 3) self.stride = make_list(stride, 3) self.dilation = make_list(dilation, 3) x_offset = (np.arange(-self.kernel_size[0] // 2 + 1, self.kernel_size[0] // 2 + 1) * self.stride[0] * self.dilation[0]).tolist() y_offset = (np.arange(-self.kernel_size[1] // 2 + 1, self.kernel_size[1] // 2 + 1) * self.stride[1] * self.dilation[1]).tolist() z_offset = (np.arange(-self.kernel_size[2] // 2 + 1, self.kernel_size[2] // 2 + 1) * self.stride[2] * self.dilation[2]).tolist() kernel_offset = np.array([[x, y, z] for z in z_offset for y in y_offset for x in x_offset]) self.kernel_offset = torch.from_numpy(kernel_offset).int()
def __init__(self, in_channels, kernel_size=3, stride=1, dilation=1, bias=False, transpose=False): super().__init__() self.in_channels = in_channels self.kernel_size = make_list(kernel_size, 4) self.stride = make_list(stride, 4) self.dilation = make_list(dilation, 4) assert (np.prod(self.kernel_size) > 1) self.kernel = nn.Parameter(torch.zeros(np.prod(self.kernel_size), in_channels, 1)) self.bias = None self.t = transpose self.init_weight()