def __init__()

in mobile_cv/arch/fbnet_v2/blur_pool.py [0:0]


    def __init__(self, num_channels, kernel_size=4, stride=2, padding_mode="zeros"):
        super().__init__()
        self.num_channels = num_channels
        self.kernel_size = kernel_size
        self.stride = stride
        self.padding_mode = padding_mode
        assert num_channels is not None
        assert (
            self.stride >= 1
        ), f"Only positive stride >= 1 is allowed, got: stride={self.stride}"

        kernel = _make_2d_blur_kernel(kernel_size)
        kernel = kernel.repeat((num_channels, 1, 1, 1))
        if kernel_size > 1 and kernel_size % 2 == 0:
            # Add extra one pixel padding if kernel_size % 2 == 0
            self.uneven_pad = _make_uneven_pad(padding_mode, (kernel_size - 1) // 2)
            left_pad = 0
        else:
            self.uneven_pad = None
            left_pad = (kernel_size - 1) // 2
        self.conv = nn.Conv2d(
            num_channels,
            num_channels,
            kernel_size=kernel_size,
            stride=stride,
            padding=left_pad,
            padding_mode=padding_mode,
            groups=num_channels,
            bias=False,
        )
        assert (
            self.conv.weight.shape == kernel.shape
        ), f"{self.conv.weight.shape} == {kernel.shape}"
        del self.conv.weight
        self.conv.weight = nn.Parameter(kernel, requires_grad=False)