0

我正在尝试实现自己的成本函数来训练我的模型一个多层感知器,我担心在训练期间我收到以下问题:

检查失败:!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 的情况下计算损失时,它可以工作,但在我的情况下,这是强制性的,因为我必须执行几个中间计算。

4

0 回答 0