class DSConv(nn.Module):
    def __init__(self, in_channels, out_channels, kernel_size, padding=0, stride=1):
        super(DSConv, self).__init__()
        
        self.convs   = [nn.Conv2d(1, 1, kernel_size=kernel_size, padding=padding, stride=stride) for _ in range(in_channels)]
        self.conv1x1 = nn.Conv2d(in_channels, out_channels, kernel_size=1)
        
    def forward(self, x):
        channels = [self.convs[idx](ch) for idx, ch in enumerate(x.split(1, dim=1))]
        return self.conv1x1(torch.cat(channels, dim=1))

The mapping / list comprehension in the forward pass looks to be a bottleneck. Are there any best-practice ways I can parallelize this so that this runs faster?