Я пытаюсь построить простой пример с нулевым CrossEntropyLoss, с тремя классами и размером мини-пакета = 1:
ce_loss = nn.CrossEntropyLoss()
outputs = torch.tensor([[1,0,3]], dtype=float)
targets = torch.tensor([1,0,3], dtype=torch.int64)
loss = ce_loss(outputs, targets)
Что приводит к ошибке:
ValueError: Expected input batch_size (1) to match target batch_size (3).
Что не так и откуда берется target batch_size (3)?
Обновление 1
Согласно моему пониманию документов PyTorch, я пробую следующие случаи. Укажите, пожалуйста, в чем я ошибаюсь.
Пример 1:
outputs = torch.tensor([[1,1]], dtype=float)
targets = torch.tensor([1], dtype=torch.int64)
loss = ce_loss(outputs, targets)
Выход:
loss: 0.6931471805599453
Вопросов:
1) У меня есть один класс, равный 1, и два прогноза для этого класса, каждое из которых равно 1, правильно?
2) Почему убыток ненулевой?
Пример 2:
outputs = torch.tensor([[1]], dtype=float)
targets = torch.tensor([1], dtype=torch.int64)
loss = ce_loss(outputs, targets)
Ошибка:
IndexError: Target 1 is out of bounds.
Вопросов:
1) У меня есть один класс, равный 1, и одно предсказание для этого класса, равное 1, правильно?
2) Почему ошибка индекса?
Пример 3:
outputs = torch.tensor([[1,1],[2,2]], dtype=float)
targets = torch.tensor([1, 2], dtype=torch.int64)
loss = ce_loss(outputs, targets)
Ошибка:
IndexError: Target 2 is out of bounds.
Вопросов:
1) У меня есть два класса, равные 1 и 2, два прогноза для этих классов, равные 1 и 2 (размер пакета = 2), правильно?
2) Почему ошибка индекса?
--- Другие вопросы: ----
Какую форму должны иметь выходные данные и цели для следующих случаев:
1) Бинарная классификация, один временной шаг, одно значение, предсказываемое одним выходным нейроном, размер пакета = 1
2) Двоичная классификация, пять различных временных шагов, 5 значений, предсказываемых одним выходным нейроном, размер пакета = 5
3) Семь классов, один временной шаг, 7 значений, предсказываемых 7 выходными нейронами, размер пакета = 1
4) Семь классов, пять различных временных шагов, 5 наборов из 7 значений предсказываются 7 выходными нейронами, размер пакета = 5