sonsang
(Sanghyun Son)
1
I have a problem about parallel multiple convolution operations.
Given B x C x H x W input features, I want to calculate C -> 1 spatial convolution ‘M’ times.
Therefore, code looks like
for i in range(M):
output[i] = F.conv2d(input[i], weight[i], padding=1)
Each weight is 1 x C x 3 x 3 tensor.
However, these operations are very slow, compared to a C -> M spatial convolution which has same complexity.
Is there any good idea for speed-up?
Thank you.
jpeg729
(jpeg729)
2
Why not just do a M spatial convolution and then separate out the channels of the output?
Moutput = F.conv2d(input, Mweight, padding=1) # where Mweight has shape M x C x 3 x 3
for i in range(M):
output[i] = Moutput[:, i]
sonsang
(Sanghyun Son)
3
Oh sorry, There is a typo.
All inputs are different.
Anyway, thank you for trying to give me the answer! Have a nice day.