Объедините потери генератора с потерей 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? Можно распечатать резюме модели?

Другие вопросы по тегам