РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
540 of 769 menu

Класс SmoothL1Loss

Класс SmoothL1Loss вычисляет сглаженную L1-функцию потерь между входным тензором и целевым тензором. Она менее чувствительна к выбросам, чем MSELoss, и имеет более плавный градиент, чем L1Loss. По умолчанию используется параметр beta = 1.0, который определяет границу перехода между L1 и L2-составляющими. Данная функция потерь особенно полезна при обучении детекторов объектов и регрессионных задач.

Синтаксис

torch.nn.SmoothL1Loss(beta=1.0, reduction='mean')

Параметры:

  • beta - параметр, определяющий границу перехода (по умолчанию 1.0);
  • reduction - способ агрегации потерь: 'none', 'mean' (по умолчанию) или 'sum'.

Пример

Давайте создадим экземпляр класса и вычислим потери между двумя простыми тензорами:

import torch import torch.nn as nn criterion = nn.SmoothL1Loss() pred = torch.tensor([1.5, 2.5, 3.5]) target = torch.tensor([1.0, 2.0, 3.0]) loss = criterion(pred, target) print(loss)

Результат выполнения кода:

tensor(0.125)

Пример

Теперь изменим параметр beta для управления чувствительностью к выбросам:

import torch import torch.nn as nn criterion = nn.SmoothL1Loss(beta=0.5) pred = torch.tensor([2.0, 3.0, 10.0]) target = torch.tensor([1.0, 2.0, 1.0]) loss = criterion(pred, target) print(loss)

Результат выполнения кода:

tensor(6.2917)

Пример

Используем режим агрегации 'sum' для получения суммы потерь без усреднения:

import torch import torch.nn as nn criterion = nn.SmoothL1Loss(reduction='sum') pred = torch.tensor([[0.5, 1.5], [2.5, 3.5]]) target = torch.tensor([[0.0, 1.0], [2.0, 3.0]]) loss = criterion(pred, target) print(loss)

Результат выполнения кода:

tensor(0.5000)

Пример

Применим функцию потерь к батчу данных с размерностью (batch, features):

import torch import torch.nn as nn torch.manual_seed(0) criterion = nn.SmoothL1Loss(beta=0.1) pred = torch.randn(4, 3) target = torch.randn(4, 3) loss = criterion(pred, target) print(loss)

Результат выполнения кода:

tensor(0.3406)

Смотрите также

  • класс MSELoss,
    который вычисляет среднеквадратичную ошибку
  • класс L1Loss,
    который вычисляет L1-функцию потерь
  • класс HuberLoss,
    которая является обобщением SmoothL1Loss с гибким параметром delta
  • класс CrossEntropyLoss,
    которая применяется для задач классификации
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить