Функция PyTorch torch.nn.HuberLoss | Учебник Runoob
Справочное руководство PyTorch torch.nn
torch.nn.HuberLossЭто функция потерь Хубера в PyTorch.
Это комбинация MSE и MAE, которая устойчива к выбросам и имеет стабильные градиенты.
Определение функции
torch.nn.HuberLoss(delta=1.0, reduction='mean')
Параметры:
delta: точка переключения; при превышении этого значения используется MAEreduction: метод агрегации
Математический принцип
L(y, ŷ) = 0.5 * (y - ŷ)², if |y - ŷ| ≤ δ L(y, ŷ) = δ * |y - ŷ| - 0.5 * δ², if |y - ŷ| > δ
Примеры использования
Пример 1: Базовое использование
Пример
import torch
import torch.nn as nn
criterion = nn.HuberLoss(delta=1.0)
pred = torch.tensor([1.0, 2.0, 3.0, 10.0])
target = torch.tensor([1.5, 2.5, 3.5, 8.0])
loss = criterion(pred, target)
print("Потеря Хубера:", loss.item())
# Сравнение с MSE
mse = nn.MSELoss()(pred, target)
print("Потеря MSE:", mse.item())
import torch.nn as nn
criterion = nn.HuberLoss(delta=1.0)
pred = torch.tensor([1.0, 2.0, 3.0, 10.0])
target = torch.tensor([1.5, 2.5, 3.5, 8.0])
loss = criterion(pred, target)
print("Потеря Хубера:", loss.item())
# Сравнение с MSE
mse = nn.MSELoss()(pred, target)
print("Потеря MSE:", mse.item())
Пример 2: Обучение регрессии
Пример
import torch
import torch.nn as nn
model = nn.Linear(10, 1)
criterion = nn.HuberLoss()
optimizer = torch.optim.Adam(model.parameters())
# Обучение
X = torch.randn(100, 10)
y = torch.randn(100, 1)
model.train()
optimizer.zero_grad()
output = model(X)
loss = criterion(output, y)
loss.backward()
optimizer.step()
print(Потери при обучении:, loss.item())
import torch.nn as nn
model = nn.Linear(10, 1)
criterion = nn.HuberLoss()
optimizer = torch.optim.Adam(model.parameters())
# Обучение
X = torch.randn(100, 10)
y = torch.randn(100, 1)
model.train()
optimizer.zero_grad()
output = model(X)
loss = criterion(output, y)
loss.backward()
optimizer.step()
print(Потери при обучении:, loss.item())
Сценарии использования
- Задачи регрессии: данные с выбросами
- Обнаружение объектов: регрессия ограничивающих рамок
- Робастное обучение: зашумлённые данные
Другие расширения