Ошибка по классам в PyTorch
Когда каждый пример относится
к одному из нескольких классов,
используют класс CrossEntropyLoss.
На вход подают сырые оценки
по классам: таблица, где строка -
один пример, а столбец -
один класс. Метки - целые номера
классов типа long, не дроби
и не вероятности.
Создадим критерий, таблицу оценок для двух примеров и трёх классов, ряд меток и выведем одну ошибку:
import torch
import torch.nn as nn
criterion = nn.CrossEntropyLoss()
scores = torch.tensor([[2.0, 1.0, 0.1], [0.5, 2.5, 0.3]])
labels = torch.tensor([0, 1])
loss = criterion(scores, labels)
print(loss) # выведет tensor(0.3185)
Число строк в таблице оценок совпадает с длиной ряда меток. Каждая метка указывает номер правильного столбца для своей строки. Создадим другой набор и снова выведем одну ошибку:
import torch
import torch.nn as nn
criterion = nn.CrossEntropyLoss()
scores = torch.tensor([[1.0, 3.0], [2.0, 0.5]])
labels = torch.tensor([1, 0])
loss = criterion(scores, labels)
print(loss) # выведет tensor(0.1642)
Соберите критерий для
классификации. Задайте таблицу
оценок [[3.0, 1.0], [0.5, 2.0]]
и метки [0, 1].
Выведите одно число ошибки.
Соберите критерий для
классификации. Задайте таблицу
оценок для трёх примеров
и двух классов:
[[1.0, 2.0], [2.0, 1.0], [0.5, 0.5]].
Метки: [1, 0, 0].
Выведите одно число ошибки.
Соберите критерий для
классификации. Задайте таблицу
оценок [[0.2, 1.5, 0.3]]
для одного примера и трёх
классов. Метка: [1].
Выведите одно число ошибки.