7 PyTorch functions for your next Machine Learning project

Medium Article Link: https://medium.com/p/356de5f31a1e

import torch

Function 1: torch.linspace

torch.linspace is used to create a 1D equally spaced tensor between the values start and end.
We can specify the size of the tensor with the steps parameters. The default is steps=100

torch.linspace(1, 10)
tensor([ 1.0000,  1.0909,  1.1818,  1.2727,  1.3636,  1.4545,  1.5455,  1.6364,
         1.7273,  1.8182,  1.9091,  2.0000,  2.0909,  2.1818,  2.2727,  2.3636,
         2.4545,  2.5455,  2.6364,  2.7273,  2.8182,  2.9091,  3.0000,  3.0909,
         3.1818,  3.2727,  3.3636,  3.4545,  3.5455,  3.6364,  3.7273,  3.8182,
         3.9091,  4.0000,  4.0909,  4.1818,  4.2727,  4.3636,  4.4545,  4.5455,
         4.6364,  4.7273,  4.8182,  4.9091,  5.0000,  5.0909,  5.1818,  5.2727,
         5.3636,  5.4545,  5.5455,  5.6364,  5.7273,  5.8182,  5.9091,  6.0000,
         6.0909,  6.1818,  6.2727,  6.3636,  6.4545,  6.5455,  6.6364,  6.7273,
         6.8182,  6.9091,  7.0000,  7.0909,  7.1818,  7.2727,  7.3636,  7.4545,
         7.5455,  7.6364,  7.7273,  7.8182,  7.9091,  8.0000,  8.0909,  8.1818,
         8.2727,  8.3636,  8.4545,  8.5455,  8.6364,  8.7273,  8.8182,  8.9091,
         9.0000,  9.0909,  9.1818,  9.2727,  9.3636,  9.4545,  9.5455,  9.6364,
         9.7273,  9.8182,  9.9091, 10.0000])
torch.linspace(start=1, end=10, steps=5)
tensor([ 1.0000,  3.2500,  5.5000,  7.7500, 10.0000])

Function 2: torch.eye

torch.eye returns a 2D tensor with the values of diagonals as 1 and other values as 0
The function expects two parameters — n and m . If m is not specified, then it returns a 2D tensor of size nxn

torch.eye(n=4, m=5)
tensor([[1., 0., 0., 0., 0.],
        [0., 1., 0., 0., 0.],
        [0., 0., 1., 0., 0.],
        [0., 0., 0., 1., 0.]])
torch.eye(n=3)
tensor([[1., 0., 0.],
        [0., 1., 0.],
        [0., 0., 1.]])

Function 3: torch.full

torch.full returns a tensor of size size with the values filled with fill_value
The size can be a list or a tuple.

torch.full(size=(3,2), fill_value=10, dtype=torch.float32)
tensor([[10., 10.],
        [10., 10.],
        [10., 10.]])
torch.full(size=[2, 3, 4], fill_value=5, dtype=torch.float32)
tensor([[[5., 5., 5., 5.],
         [5., 5., 5., 5.],
         [5., 5., 5., 5.]],

        [[5., 5., 5., 5.],
         [5., 5., 5., 5.],
         [5., 5., 5., 5.]]])

Function 4: torch.cat

torch.cat concatenates a sequence of tensors over the specified dimension dim.
All the tensors must be of the same shape

a = torch.ones(3,2)
b = torch.zeros(3,2)
torch.cat((a, b)) # default dim=0
tensor([[1., 1.],
        [1., 1.],
        [1., 1.],
        [0., 0.],
        [0., 0.],
        [0., 0.]])
x = torch.full((3,3), fill_value=4, dtype=torch.float32)
y = torch.full((3,3), fill_value=7, dtype=torch.float32)
torch.cat((x, y), dim=1)
tensor([[4., 4., 4., 7., 7., 7.],
        [4., 4., 4., 7., 7., 7.],
        [4., 4., 4., 7., 7., 7.]])

Function 5: torch.take

torch.take returns a tensor with the elements of the input tensors at the given indices.
The input tensor is treated as a 1D tensor to return the values.

# 1D input Tensor
b = torch.tensor([10, 20, 30, 40, 50])
torch.take(b, torch.tensor([2]))
tensor([30])
# 2D input tensor
a = torch.tensor([[1, 2, 3],
                  [4, 5, 6]])
torch.take(a, torch.tensor([3,4]))
tensor([4, 5])

Function 6: torch.unbind

torch.unbind removes a tensor dimension along the given dimension dim
The default dimension is 0 i.e. dim=0

a = torch.tensor([[1, 2, 3],
                  [4, 5, 6]])
torch.unbind(a)
(tensor([1, 2, 3]), tensor([4, 5, 6]))
a = torch.tensor([[1, 2, 3],
                  [4, 5, 6]])
torch.unbind(a, dim=1)
(tensor([1, 4]), tensor([2, 5]), tensor([3, 6]))

Function 7: torch.Tensor.clone

torch.Tensor.clone returns a copy of the tensor with the same size and data type.

a = torch.tensor([[1., 2.],
                  [3., 4.],
                  [5., 6.]])
b = a.clone()
a[1,0]=9
b
tensor([[1., 2.],
        [3., 4.],
        [5., 6.]])