Машинное обучение

7 функций PyTorch для вашего следующего проекта машинного обучения

Изучение различных функций PyTorch

PyTorch - это библиотека машинного обучения, пользующаяся все большей популярностью. В этой статье мы рассмотрим семь функций, доступных в PyTorch.

Сначала мы импортируем PyTorch, используя import torch

Функция 1: torch.linspace

torch.linspace используется для создания одномерного тензора с равным интервалом между значениями start и end. Мы можем указать размер тензора с помощью параметров steps. По умолчанию steps=100

Пример-1:

torch.linspace(1, 10)
Output:
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])

Пример-2:

torch.linspace(start=1, end=10, steps=5)
Output:
tensor([ 1.0000,  3.2500,  5.5000,  7.7500, 10.0000])

Функция 2: torch.eye

torch.eye возвращает двумерный тензор со значениями диагоналей как 1 и другими значениями как 0
Функция ожидает два параметра - n и m. Если m не указан, возвращается двумерный тензор размера nxn.

Пример-1:

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

Пример-2:

torch.eye(n=3)
Output:
tensor([[1., 0., 0.],
        [0., 1., 0.],
        [0., 0., 1.]])

Функция 3: torch.full

torch.full возвращает тензор размера size со значениями, заполненными fill_value
size может быть списком или кортежем.

Пример-1:

torch.full(size=(3,2), fill_value=10)
Output:
tensor([[10., 10.],
        [10., 10.],
        [10., 10.]])

Пример-2:

torch.full(size=[2, 3, 4], fill_value=5)
Output:
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.]]])

Функция 4: torch.cat

torch.cat объединяет последовательность тензоров по указанному измерению dim. Все тензоры должны быть одинаковой формы.

Пример-1:

a = torch.ones(3,2)
b = torch.zeros(3,2)
torch.cat((a, b)) # default dim=0
Output:
tensor([[1., 1.],
        [1., 1.],
        [1., 1.],
        [0., 0.],
        [0., 0.],
        [0., 0.]])

Пример-2:

x = torch.full((3,3), fill_value=4)
y = torch.full((3,3), fill_value=7)
torch.cat((x, y), dim=1)
Output:
tensor([[4., 4., 4., 7., 7., 7.],
        [4., 4., 4., 7., 7., 7.],
        [4., 4., 4., 7., 7., 7.]])

Функция 5: torch.take

torch.take возвращает тензор с элементами входных тензоров по заданным индексам. Входной тензор обрабатывается как одномерный тензор, возвращающий значения.

Пример-1:

# 1D input Tensor
b = torch.tensor([10, 20, 30, 40, 50])
torch.take(b, torch.tensor([2]))
Output:
tensor([30])

Пример-2:

# 2D input tensor
a = torch.tensor([[1, 2, 3],
                  [4, 5, 6]])
torch.take(a, torch.tensor([3,4]))
Output:
tensor([4, 5])

Функция 6: torch.unbind

torch.unbind удаляет тензорное измерение по заданному измерению dim
Размер по умолчанию равен 0, т.е. dim=0

Пример-1:

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

Пример-2:

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

Функция 7: torch.Tensor.clone

torch.Tensor.clone возвращает копию тензора с тем же размером и типом данных.

Когда мы создаем копию тензора с помощью x=y, изменение одной переменной также влияет на другую переменную, поскольку она указывает на то же место в памяти.

Например,

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

Чтобы избежать этого, мы можем создать глубокую копию тензора, используя метод .clone.

Пример:

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

Заключение

В этой статье мы увидели работу семи функций, доступных в PyTorch. Надеюсь, эта статья помогла вам разобраться в этих функциях. Есть ряд других полезных функций. Вы можете обратиться к официальной документации за полным списком доступных функций.

использованная литература

Ресурсы

Фрагменты кода, использованные в этой статье, доступны на моей странице GitHub.

Давайте подключимся

LinkedIn: https://www.linkedin.com/in/jimit105/
GitHub: https://github.com/jimit105
Twitter: https://twitter.com/ jimit105