Keras loss_weights и постоянный весовой коэффициент в функции потерь - PullRequest
0 голосов
/ 03 февраля 2020

Модель Keras использует две функции потерь, одна из них - это функция self_regularization_loss(), которая использует параметр λ для взвешивания своего вывода:

def self_regularization_loss(y_true, y_pred):
    lambda_ = 0.0001
    return lambda_ * tf.reduce_sum(tf.abs(y_pred - y_true))

model.compile(optimizer=sgd, loss=[self_regularization_loss, local_adversarial_loss])

Я пытался переместить этот вес в аргумент loss_weights до model.compile():

def self_regularization_loss(y_true, y_pred):
    return tf.reduce_sum(tf.abs(y_pred - y_true))

lambda_ = 0.0001
model.compile(optimizer=sgd, loss=[self_regularization_loss, local_adversarial_loss],
              loss_weights=[lambda_, 1.0])

Тренировочное поведение модели резко изменилось. Однако я не ожидал бы, что это будет так, поскольку

Значение убытка, которое будет минимизировано моделью, будет тогда взвешенной суммой всех индивидуальных потерь, взвешенных по loss_weights коэффициенты.

...