I want to code this matrix multiplication:
B=16, h=32, w=56, b*b=64, n=25
torch.mul(torch.rand([16, 32, 56, 64]),torch.rand([16, 32, 56, 64,25]))
but I encountered in with this error:
The size of tensor a (64) must match the size of tensor b (25) at non-singleton dimension 4
Would you mind helping me to fix this problem?
I think the simplest is to write it as a matrix matrix multiplication. And so add a temporary dimension of size 1 on the first Tensor:
torch.matmul(torch.rand([16, 32, 56, 1, 64]),torch.rand([16, 32, 56, 64,25])).squeeze(-2)
Thanks for your reply. The problem solved.
Would you mind explaining it? I do not understand it.
Bxhxw as batch dimensions. And
(bb)xn for the other dimensions of each other dimensions.
Doing the matrix multiply between the two, will give you a Tensor with
1xn and with the same batch size.
The squeeze removes the dimension of size 1.
Thanks for your help dear @albanD