CrossEntropy¶
Описание¶
Функция потерь, вычисляющая перекрёстную энтропию (cross-entropy). Отражает, как и KLDivergence, меру ошибки при представлении одной плотности (реальной) вероятностей другой (предсказанной).
Применяется в задачах классификации.
Формула функции ошибки:
где
M - количество классов;
y_{o,c} - бинарный индикатор (0 или 1) принадлежности объекта o классу с;
p(y_{o,c}) - предсказанная классификатором вероятность принадлежности объекта o классу с.
Инициализация¶
def __init__(self, maxlabels=None, weights=None):
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
maxlabels | int | Индекс последнего возможного класса | None |
weigths | tensor | Вектор весов классов | None |
Пояснения
maxlabels
- нужен для дополнительной проверки при работе с загруженными целевыми лейблами, т.е. если в целевых лейблах присутствуют значения большие, чем переданная в этом аргументе величина, класс выкинет ошибку;
weights
- вектор весов классов нужен для того, чтобы регулировать влияние того или иного класса на величину функции ошибки, например, если работа ведётся с несбалансированным датасетом.
Примеры¶
Необходимые импорты:
import numpy as np
from PuzzleLib.Backend import gpuarray
from PuzzleLib.Cost import CrossEntropy
Info
gpuarray
необходим для правильного размещения тензора на GPU.
Синтетические целевой и предсказательный тензоры:
scores = gpuarray.to_gpu(np.random.randn(20, 10, 3).astype(np.float32))
labels = gpuarray.to_gpu(np.random.randint(low=0, high=10, size=(20, 3)).astype(np.int32))
Important
Не забывайте, что первым измерением целевого и предсказательного тензоров является размер батча.
Инициализация функции ошибки:
entr = CrossEntropy()
Расчёт ошибки и градиента на батче:
error, grad = entr(scores, labels)