Est-ce un bogue ? torche.__version__ est '0.1.11+b13b701' .
Fonctionne bien pour moi avec (presque) la dernière version ( '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)
les sorties
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]
Salut,
Le nn.Module
n'a pas d'arrière (aucun d'entre eux n'en a), leur avant est implémenté avec des méthodes conformes à l'autograd et est donc automatiquement différencié.
Si vous voulez trouver l'implémentation pour MultiMarginLoss
, elle est implémentée ici en c.
Merci. Je débute avec PyTorch. Je le comprends maintenant.
Commentaire le plus utile
Salut,
Le
nn.Module
n'a pas d'arrière (aucun d'entre eux n'en a), leur avant est implémenté avec des méthodes conformes à l'autograd et est donc automatiquement différencié.Si vous voulez trouver l'implémentation pour
MultiMarginLoss
, elle est implémentée ici en c.