SmoothL1

Описание

Функция потерь, являющаяся комбинацией MAE и MSE функций ошибок. Дифференцируема в нуле, в отличие от MAE, и не так чувствительна к выбросам, как MSE.

Применяется в задачах регрессии.

Формула функции ошибки:

S = \begin{cases} \frac{1}{2}(y-y^p)^2 & \quad \text{if } |y-y^p| < 1\\ |y-y^p| - \frac{1}{2} & \quad \text{if } |y-y^p| \geq 1 \end{cases}

где

N - количество объектов в выборке;
y - реальное значение объекта;
y^p - предсказанное моделью значение для объекта.

Инициализация

def __init__(self):

Параметры

-

Пояснения

-

Примеры


Необходимые импорты:

>>> import numpy as np
>>> from PuzzleLib.Backend import gpuarray
>>> from PuzzleLib.Cost import SmoothL1

Info

gpuarray необходим для правильного размещения тензора на GPU.

Синтетические целевой и предсказательный тензоры:

>>> targets = gpuarray.to_gpu(np.random.randn(10, 10).astype(np.float32))
>>> predictions = gpuarray.to_gpu(np.random.randn(10, 10).astype(np.float32))

Important

Не забывайте, что первым измерением целевого и предсказательного тензоров является размер батча.

Инициализация функции ошибки:

>>> smooth = SmoothL1()

Расчёт ошибки и градиента на батче:

>>> error, grad = smooth(predictions, targets)