Я восстановил ошибку
Expected object of scalar type Long but got scalar type Int for argument #3 'index'
Это из этой строки.
targets = torch.zeros(log_probs.size()).scatter_(1, targets.unsqueeze(1).data.cpu(), 1)
Я не уверен, что делать, поскольку я пытался преобразовать это в длинный, используя несколько мест,Я попытался поставить
.long
в конце, а также установить dtype на torch.long, который все еще не работал.
Очень похоже на это, но он не сделалчто-нибудь, чтобы получить ответ «Ожидается, что долго, но получил Int» при запуске сценария PyTorch
Я изменил большую часть кода, и вот мое последнее представление, но теперь он дает мне то же самоевыпуск.
def forward(self, inputs, targets):
"""
Args:
inputs: prediction matrix (before softmax) with shape (batch_size, num_classes)
targets: ground truth labels with shape (num_classes)
"""
log_probs = self.logsoftmax(inputs)
targets = torch.zeros(log_probs.size()).scatter_(1, targets.unsqueeze(1).data.cpu(), 1)
if self.use_gpu: targets = targets.to(torch.device('cuda'))
targets = (1 - self.epsilon) * targets + self.epsilon / self.num_classes
loss = (- targets * log_probs).mean(0).sum()
return loss