How to rescale a tensor in the range [0, 1] and sum to 1 in PyTorch?

PyTorchServer Side ProgrammingProgramming

We can rescale an n-dimensional input Tensor such that the elements lie within the range [0,1] and sum to 1. To do this, we can apply the Softmax() function. We can rescale the n-dimensional input tensor along a particular dimension. The size of the output tensor is the same as the input tensor.

Syntax

torch.nn.Softmax(dim)

Parameters

  • dim – The dimension along which the Softmax is computed.

Steps

We could use the following steps to crop an image at random location with given size −

  • Import the required library. In all the following examples, the required Python library is torch. Make sure you have already installed it.

import torch
  • Define a n-dimensional input tensor input.

input = torch.randn(5,2)
  • Define the Softmax function passing the dimension dim as an optional parameter.

softmax = torch.nn.Softmax(dim = 1)
  • Apply the above defined Softmax function on the input tensor input.

output = softmax(input)
  • Print the tensor containing Softmax values.

print(output)

Example 1

The following Python program rescales a tensor in the range [0, 1] and sum to 1.

import torch
input = torch.randn(5)
print(input)

softmax = torch.nn.Softmax(dim = 0)
output = softmax(input)
print(output)

print(output.sum())

Output

tensor([-0.5654, -0.9031, -0.3060, -0.6847, -1.4268])
tensor([0.2315, 0.1651, 0.3001, 0.2055, 0.0978])
tensor(1.0000)

Notice that after rescaling, the elements of the tensor are in the range [0,1] and also the sum of elements of the rescaled tensor is 1.

Example 2

The following Python program rescales a tensor in the range [0, 1] and sum to 1.

# Import the required library
import torch
input = torch.randn(5,2)
print(input)

softmax = torch.nn.Softmax(dim = 1)
output = softmax(input)
print(output)
print(output[0])
print(output[1].sum())

Output

tensor([[-0.5788, 0.9244],
   [-0.5172, 1.6231],
   [ 1.3032, -2.1107],
   [-0.4802, 0.1321],
   [-1.3219, -0.3570]])
tensor([[0.1819, 0.8181],
   [0.1052, 0.8948],
   [0.9681, 0.0319],
   [0.3515, 0.6485],
   [0.2759, 0.7241]])
tensor([0.1819, 0.8181])
tensor(1.)

Notice that after rescaling, the elements of the tensor are in the range [0,1] and also the sum of elements of rescaled tensor is 1.

raja
Updated on 25-Jan-2022 08:03:26

Advertisements