I like to convert a 4d input tensor to a 3d tensor where different inputs to a convolution/grouped convolution layer are flattened into rows. In other words, the function that does this conversion should be able to generate different inputs to the convolutions based on kernel size, stride, padding, etc. I have used something similar to this in numpy before, but I’m not sure how I can do this in PyTorch.
I think this is in fact what is done for converting convolutions to matrix-matrix multiplication.
Can I use unfold
or Im2Col
to implement what I have in mind? If yes, how? If not, what is the best way of implementing this other than writing a nested for
loop?
Thanks!