Объедините потери генератора с потерей GAN в генерирующей состязательной сети
Я сейчас пытаюсь реализовать GAN в керасе. Я хочу использовать как потери GAN, так и потери генератора одновременно, когда я тренирую сеть. Потому что из некоторых работ я обнаружил, что это может повысить производительность.
Это немного похоже на функцию потерь в статье "Многомасштабная сеть синтеза видеокадров с транзитивной потерей согласованности": функция потерь
Исходный код с одной только потерей GAN выглядит следующим образом:
self.generator = generator
self.discriminator = discriminator
self.gan = Sequential([generator, discriminator])
gen, dis, gendis = self.generator, self.discriminator, self.gan
gendis.compile(optimizer=opt, loss='binary_crossentropy')
Я хотел бы объединить потери генератора вместе. Таким образом, я попробовал следующее:
gendis.compile(optimizer=opt, loss={'generator_output': 'mse', 'model_2':'binary_crossentropy'}, loss_weights=[1., 0.2])
Но это не работает и показывает сообщение об ошибке: "ValueError: Неизвестная запись в словаре потерь:" generator_output". Ожидаются только следующие ключи: ['model_2']'.
Как я могу добавить потери генератора в эту процедуру обучения?
Большое спасибо!
1 ответ
Возможно, вам понадобится установить ключ потери для имен выходных данных модели. Итак, если второй ключ, как ожидается, будет model_2, то, возможно, первый ключ - model_1? Можно распечатать резюме модели?