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?
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) –