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, он работает, но в моем случае это обязательно, так как мне нужно выполнить несколько промежуточных вычислений.