Isso é um inseto? tocha.__version__ é '0.1.11+b13b701' .
Funciona bem para mim com (quase) a versão mais recente ( '0.1.11+8aa1cef'
)
import torch
import torch.nn as nn
from torch.autograd import Variable
y = Variable(torch.rand(5, 3), requires_grad=True)
t = Variable(torch.LongTensor(5).random_(0, 2))
m = nn.MultiMarginLoss()
loss = m(y, t)
loss.backward()
print(y.grad)
saídas
Variable containing:
-0.1333 0.0667 0.0667
0.0667 -0.1333 0.0667
0.0667 -0.1333 0.0667
0.0667 -0.1333 0.0667
0.0667 -0.1333 0.0667
[torch.FloatTensor of size 5x3]
Oi,
O nn.Module
não tem um backward (nenhum deles tem), seu forward é implementado com métodos compatíveis com autograd e, portanto, é diferenciado automaticamente.
Se você quiser encontrar a implementação para MultiMarginLoss
, ela está implementada aqui em c.
Obrigado. Estou apenas começando com o PyTorch. Eu entendo agora.
Comentários muito úteis
Oi,
O
nn.Module
não tem um backward (nenhum deles tem), seu forward é implementado com métodos compatíveis com autograd e, portanto, é diferenciado automaticamente.Se você quiser encontrar a implementação para
MultiMarginLoss
, ela está implementada aqui em c.