Я хочу вычислить точность восстановления моего автоэнкодера, используя CrossEntropyLoss:
ae_criterion = nn.CrossEntropyLoss()
ae_loss = ae_criterion(X, Y)
, где X
- реконструкция автоэнкодера, а Y
- цель (поскольку это автоэнкодер, Y
совпадает с исходным вводом X
).И X
, и Y
имеют форму [42, 32, 130] = [batch_size, timesteps, number_of_classes]
.Когда я запускаю приведенный выше код, я получаю следующую ошибку:
ValueError: Ожидаемый целевой размер (42, 130), получен факел. Размер ([42, 32, 130])
Просматривая документы, я все еще не уверен, как правильно позвонить nn.CrossEntropyLoss()
.Кажется, я должен изменить Y, чтобы иметь форму [42, 32, 1]
, где каждый элемент является скаляром в интервале [0, 129]
(или [1, 130]
), я прав?
Есть ли способ избежатьэтот?Поскольку X
и Y
находятся между 0
и 1
, могу ли я просто использовать двоичную кросс-энтропийную потерю поэлементно эквивалентным образом?