Best way to convolve on different channels with a single kernel?

You could repeat the single kernel and use the functional API:

x = Variable(torch.randn(1, in_channels, 100))

# Gaussian kernel
kernel = Variable(torch.FloatTensor([[[0.06136, 0.24477, 0.38774, 0.24477, 0.06136]]]))
weights = kernel.repeat(1, in_channels, 1)
output = F.conv1d(x, weights)

Would this work for your use case?