La croix de l'Entropie dans PyTorch

Je suis un peu confus par la croix entropie dans PyTorch.

Considérant cet exemple:

import torch
import torch.nn as nn
from torch.autograd import Variable

output = Variable(torch.FloatTensor([0,0,0,1])).view(1, -1)
target = Variable(torch.LongTensor([3]))

criterion = nn.CrossEntropyLoss()
loss = criterion(output, target)
print(loss)

Je m'attends à ce que la perte à 0. Mais j'obtiens:

Variable containing:
 0.7437
[torch.FloatTensor of size 1]

Pour autant que je sais de la croix de l'entropie peut être calculé comme ceci:

La croix de l'Entropie dans PyTorch

Mais ne devrait pas être le résultat de 1*log(1) = 0 ?

J'ai essayé différentes entrées comme "one-hot" encodages, mais cela ne fonctionne pas à tous, il semble donc que l'entrée de la forme de la perte de la fonction est d'accord.

Je serais vraiment reconnaissant si quelqu'un pouvait m'aider et me dire où est mon erreur.

Merci d'avance!

InformationsquelleAutor blue-phoenox | 2018-03-20