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.]])