Я пытаюсь использовать Keras для выполнения работы, выполненной в Общая и адаптивная функция робастной потери .Автор предоставляет код тензорного потока, который обрабатывает сложные детали.Я просто пытаюсь использовать его готовую функцию в Керасе.
Его пользовательская функция потерь учитывает параметр «альфа», который управляет формой функции потерь.Я хотел бы отслеживать «альфа» в дополнение к потере во время тренировки.
Я немного знаком с пользовательскими функциями потери Keras и использованием оболочек, но я не совсем уверен, как использовать обратные вызовы для отслеживания «альфы».Ниже я хотел бы наивно построить функцию потерь в Керасе.Однако я не уверен, как бы я тогда получил доступ к «альфе» для отслеживания.
Из предоставленного кода тензорного потока функция lossfun (x) возвращает кортеж.
def lossfun(x,
alpha_lo=0.001,
alpha_hi=1.999,
alpha_init=None,
scale_lo=1e-5,
scale_init=1.,
**kwargs):
"""
Returns:
A tuple of the form (`loss`, `alpha`, `scale`).
"""
def customAdaptiveLoss():
def wrappedloss(y_true,y_pred):
loss, alpha, scale = lossfun((y_true-y_pred)) #Author's function
return loss
return wrappedloss
Model.compile(optimizer = optimizers.Adam(0.001),
loss = customAdaptiveLoss,)
Опять же, на что я надеюсьdo - отслеживать переменную 'alpha' во время тренировки.