Charles
Charles

Reputation: 21

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.

Upvotes: 1

Views: 672

Answers (1)

jodag
jodag

Reputation: 22184

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.

Upvotes: 1

Related Questions