Introduction
In this article, we will see how we can perform element-wise multiplication of tensors in PyTorch by using torch.mul() or torch.multiply() function. We will see various examples to understand better how these functions work.
Element Wise Tensor Multiplication with torch.mul() & torch.multiply()
torch.mul() function in PyTorch is used to do element-wise multiplication of tensors. It should be noted here that torch.multiply() is just an alias for torch.mul() function and they do the same work.
Using either of torch.mul() or torch.multiply() you can do element-wise tensor multiplication between –
- A scalar and tensor.
- Two tensors of the same dimensions.
- Two tensors of different dimensions provided the size of at least one dimension is the same.
Examples
First of all, let us import PyTorch library before we start the examples.
In [0]:
import torch;
Example – 1: Multiplying 2D Tensor and Scalar with torch.mul()
Method 1: By using torch.mul()
In [1]:
tensor = torch.randint(high = 20, size=(3,3)) tensor
tensor([[13, 16, 18], [11, 15, 6], [ 3, 0, 4]])
output_tensor = torch.mul(5,tensor) output_tensor
tensor([[65, 80, 90], [55, 75, 30], [15, 0, 20]])
Method 2: By using the alias torch.multiply()
output_tensor = torch.multiply(5,tensor) output_tensor
tensor([[65, 80, 90], [55, 75, 30], [15, 0, 20]])
Method 3: By using Mathematical Multiplication Symbol
In [4]:
output_tensor = tensor*5 output_tensor
tensor([[65, 80, 90], [55, 75, 30], [15, 0, 20]])
Example – 2: Multiplying 2D Tensor with 1D Tensor
In this example, we first create a 2D tensor of size 3×4 and one 1D tensor of size 1×4. Finally, we do element-wise multiplication with torch mul function.
In [5]:
tensor1 = torch.randint(high = 20, size=(3,4)) tensor1
tensor([[17, 19, 13, 19], [ 8, 5, 10, 2], [ 0, 7, 18, 5]])
tensor2 = torch.randint(high = 10, size=(1,4)) tensor2
tensor([[2, 8, 5, 3]])
output_tensor = torch.mul(tensor1,tensor2) output_tensor
tensor([[ 34, 152, 65, 57], [ 16, 40, 50, 6], [ 0, 56, 90, 15]])
Example – 3: Multiplying two 2D Tensors of Same Size
tensor1 = torch.randint(high = 20, size=(3,4)) tensor1
tensor([[ 1, 1, 9, 15], [ 7, 3, 0, 1], [14, 4, 10, 7]])
tensor2 = torch.randint(high = 10, size=(3,4)) tensor2
Out[7]:
tensor([[0, 4, 7, 8], [0, 9, 5, 6], [9, 7, 5, 5]])
output_tensor = torch.mul(tensor1,tensor2) output_tensor
tensor([[ 0, 4, 63, 120], [ 0, 27, 0, 6], [126, 28, 50, 35]])
Example – 4: Multiplying 3D Tensor with 2D Tensor
tensor1 = torch.randint(high = 20, size=(2,3,4)) tensor1
Out[9]:
tensor([[[ 4, 9, 15, 1], [ 7, 18, 14, 19], [19, 19, 15, 10]], [[ 4, 1, 2, 17], [19, 4, 2, 9], [14, 1, 14, 13]]])
tensor2 = torch.randint(high = 10, size=(3,4)) tensor2
Out[10]:
tensor([[4, 0, 9, 1], [5, 6, 0, 4], [4, 9, 5, 6]])
output_tensor = torch.mul(tensor1,tensor2) output_tensor
tensor([[[ 16, 0, 135, 1], [ 35, 108, 0, 76], [ 76, 171, 75, 60]], [[ 16, 0, 18, 17], [ 95, 24, 0, 36], [ 56, 9, 70, 78]]])
Example – 5: Multiplying 3D Tensor with 1D Tensor
tensor1 = torch.randint(high = 20, size=(2,3,4)) tensor1
tensor([[[ 5, 10, 13, 16], [ 4, 17, 18, 7], [19, 14, 4, 10]], [[ 2, 3, 0, 10], [15, 15, 9, 16], [ 5, 2, 3, 5]]])
tensor2 = torch.randint(high = 10, size=(1,4)) tensor2
tensor([[2, 4, 0, 6]])
output_tensor = torch.mul(tensor1,tensor2) output_tensor
Out[14]:
tensor([[[10, 40, 0, 96], [ 8, 68, 0, 42], [38, 56, 0, 60]], [[ 4, 12, 0, 60], [30, 60, 0, 96], [10, 8, 0, 30]]])
Reference: PyTorch Documentation