2017-10-08 6 views
0

J'ai un système qui génère des données d'entraînement, et je veux ajouter des fonctions de perte ensemble pour obtenir une taille de lot. Je suis en train de faire (full code at commit in question),Ajout de fonctions de perte dans MxNet - "Operator _copyto est non dérivable car il n'a pas enregistré l'attribut FGradient"

for epoch in range(100): 
    with mx.autograd.record(): 
     loss = 0.0 
     for k in range(40): 
      (i, x), (j, y) = random.choice(data), random.choice(data) 
      # Just compute loss on last output 
      if i == j: 
       loss = loss - l2loss(net(mx.nd.array(x)), net(mx.nd.array(y))) 
      else: 
       loss = loss + l2loss(net(mx.nd.array(x)), net(mx.nd.array(y))) 
     loss.backward() 
    trainer.step(BATCH_SIZE) 

Mais je reçois une erreur comme,

--------------------------------------------------------------------------- 
MXNetError        Traceback (most recent call last) 
<ipython-input-39-14981406278a> in <module>() 
    21    else: 
    22     loss = loss + l2loss(net(mx.nd.array(x)), net(mx.nd.array(y))) 
---> 23   loss.backward() 
    24  trainer.step(BATCH_SIZE) 
    25  avg_loss += mx.nd.mean(loss).asscalar() 

... More trace ... 

MXNetError: [16:52:49] src/pass/gradient.cc:187: Operator _copyto is non-differentiable because it didn't register FGradient attribute. 

Comment puis-je ajouter progressivement des fonctions de perte comme je suis en train de?

Répondre

0

Quelle version de MXNet utilisez-vous? Je ne pouvais pas reproduire cela en utilisant la dernière base de code. Vous pouvez essayer la branche principale GitHub ou la version 0.12.

+0

Je l'ai eu pour travailler [ici] (https://github.com/aidan-plenert-macdonald/mxnet-the-straight-dope/blob/bayes-backprop/chapter03_deep-neural-networks/mlp-bayes- by-backprop.ipynb) –