Изменение весов потерь для нескольких выходов в зависимости от эпохи - PullRequest
1 голос
/ 10 февраля 2020

Можно ли изменить вес различных выходов модели TF2 на основе эпохи?

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

model.compile(optimizer=tf.keras.optimizers.Adam(),
              loss=['mean_squared_error', 'mean_squared_error', 'mean_squared_error'],
              loss_weights=[0.25, 1., 1.])

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

loss_weights=[0.25 + 0.01*epoch, 1. - 0.005*epoch , 1. - 0.005*epoch]

Возможно ли это и если да. Каков наилучший способ сделать это?

1 Ответ

1 голос
/ 10 февраля 2020

tf.keras.Model имеет свойство _loss_weights_list - вы можете попытаться изменить его с помощью пользовательского обратного вызова, точно так же, как tf.keras.callbacks.LearningRateScheduler манипулирует скоростью обучения в процессе обучения.

РЕДАКТИРОВАТЬ: Другая идея многократно вызывать model.compile(), а затем model.fit() только на одну эпоху:

for epoch_idx in range(total_epochs):
    loss_weights=[0.25 + 0.01 * epoch_idx, 1. - 0.005 * epoch_idx, 1. - 0.005 * epoch_idx]
    model.compile(..., loss_weights=loss_weights)
    model.fit(..., epochs=1, initial_epoch=epoch_idx)
...