Scalar matrix multiplication for a tensor and an array of scalars

If I have a 3d tensor of size
T1 --> torch.Size([196, 14, 14])
and a 1d tensor of size
T2 --> torch.Size([196])

How do I multiply matrices of size [14, 14] in T1 by the corresponding scalar in T2?

e.g if T2[0] == 3, then the first multiplication would be
T1[0] * 3 , etc.

So the output should be with the original shape of T1.

Hi,

You just need to change the view of second tensor to match shapes in corresponding dimension, then PyTorch’s tensor broadcasting will take care of that. e.g.

t1 = torch.arange(0, 196*14*14).view((196, 14, 14))  # shape (196, 14, 14)
t2 = torch.arange(196).view(-1, 1, 1)  # shape (196, 1, 1)
result = t1*t2

Bests

1 Like