Класс ReLU
Класс ReLU реализует функцию активации Rectified Linear Unit,
которая применяется к каждому элементу входного тензора.
Это одна из самых популярных функций активации в глубоком обучении
благодаря своей простоте и эффективности.
Функция возвращает входное значение, если оно положительное,
и ноль в противном случае.
Синтаксис
torch.nn.ReLU(inplace=False)
Параметры
Конструктор класса ReLU принимает один необязательный параметр:
-
inplace(<bool, по умолчаниюFalse) - если установлено значениеTrue, операция выполняется непосредственно на входном тензоре без создания новой копии, что позволяет экономить память.
Пример
Давайте создадим слой ReLU и применим его к тензору:
import torch
import torch.nn as nn
relu = nn.ReLU()
t = torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0, 3.0])
res = relu(t)
print(res)
Результат выполнения кода:
tensor([0., 0., 0., 1., 2., 3.])
Пример
Используем параметр inplace=True для экономии памяти:
import torch
import torch.nn as nn
relu = nn.ReLU(inplace=True)
t = torch.tensor([-5.0, -3.0, 0.0, 2.0, 4.0])
res = relu(t)
print(res)
Результат выполнения кода:
tensor([0., 0., 0., 2., 4.])
Пример
Применим слой ReLU к двумерному тензору:
import torch
import torch.nn as nn
relu = nn.ReLU()
t = torch.tensor([
[-1.0, 2.0, -3.0],
[4.0, -5.0, 6.0],
])
res = relu(t)
print(res)
Результат выполнения кода:
tensor([
[0., 2., 0.],
[4., 0., 6.],
])
Пример
Используем ReLU в составе последовательной модели:
import torch
import torch.nn as nn
model = nn.Sequential(
nn.Linear(10, 20),
nn.ReLU(),
nn.Linear(20, 5),
nn.ReLU(),
)
t = torch.randn(3, 10)
res = model(t)
print(res.shape)
Результат выполнения кода:
torch.Size([3, 5])