我正在尝试实现自己的成本函数来训练我的模型一个多层感知器,我担心在训练期间我收到以下问题:
检查失败:!AGInfo::IsNone(*i): 无法区分节点,因为它不在计算图中。您需要将 is_recording 设置为 true 或使用 autograd.record() 来保存计算图以供后向使用。如果要对同一个图进行两次微分,则需要将 retain_graph=True 向后传递。
我试过了 :
def myloss(forecast, target):
.
.
.
.
with autograd.record():
loss= nd.array(np.sqrt((r-1)**2+(beta-1)**2+(gamma-1)**2))
return loss
在hybrid_forward
我调用我的损失函数
def hybrid_forward(self, F, past_target, future_target):
prediction = self.nn(past_target)
loss = ( 1 - self.myloss( prediction,future_target) ).mean(axis=-1)
return loss
我还注意到,当我在不将参数从 mxnet ndarray 转换为 numpy ndarray 的情况下计算损失时,它可以工作,但在我的情况下,这是强制性的,因为我必须执行几个中间计算。