class DepthwiseSeparableConv(nn.Sequential): def __init__(self, chin, chout, dk): super().__init__( # Depthwise convolution nn.Conv2d(chin, chin, kernel_size=dk, stride=1, padding=dk-2, bias=False, groups=chin), # Pointwise convolution nn.Conv2d(chin, chout, kernel_size=1, bias=False), ) conv2 = DepthwiseSeparableConv(chin=m, chout=n, dk=dk) print(f"Expected number of parameters: {m * dk * dk + m * 1 * 1 * n}") print(f"Actual number of parameters: {num_parameters(conv2)}")