Gluon-ts: проблема при попытке персонализировать функцию стоимости

Я пытаюсь реализовать свою собственную функцию стоимости для обучения моей модели многослойного персептрона, меня беспокоит, что во время обучения я получаю следующую проблему:

Ошибка проверки:!AGInfo::IsNone(*i): невозможно различить узел, поскольку он не находится в вычислительном графе. Вам нужно установить is_recording в значение true или использовать autograd.record(), чтобы сохранить вычислительные графики для обратного отсчета. Если вы хотите дифференцировать один и тот же график дважды, вам нужно передать keep_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, он работает, но в моем случае это обязательно, так как мне нужно выполнить несколько промежуточных вычислений.

0 ответов

Другие вопросы по тегам