How to perform element-wise product in PyTorch?
I have two torch tensors a and b. Tensor a has the shape of [batch_size, emb_size] and Tensor b has the shape of [num_of_words, emb_size]. I want to do the element-wise product on these two tensors instead of dot product.

I noticed that "*" can perform element-wise product but it doesn't fit my case.

For example, batch_size = 3, emb_size = 2, num_of_words = 5.

a = torch.rand((3,2))
b = torch.rand((5,2))


I want to get something like:

torch.cat([a[0]*b, a[1]*b, a[2]*b]).view(3, 5, 2)


but I want to do this in an efficient and elegant way.

You can use

a.unsqueeze(1) * b


PyTorch supports broadcasting semantics but you need to make sure the singleton dimensions are in the correct locations.
