Keras GAN分别具有发生器和鉴别器的多个输出

时间:2018-10-27 15:21:58

标签: keras generative-adversarial-network

我正在使用Keras建模GAN,由于我有两个输出,因此我需要合并两个损失。一个输出来自Discriminator,在下面的代码中称为“标签”,另一输出来自Generator,称为​​“ Bloss”。那么有可能分别用G和D的两个输出来训练GAN(组合发生器和鉴别器)的组合模型吗?

    input = Input(shape=self.input_shape)
    output_G, Bloss = self.G(input)

    # For the combined model we will only train the generator
    self.D.trainable = False

    label = self.D(output_G)

    self.combined = Model(inputs=input,
                          outputs=[label, Bloss])
    self.combined.compile(loss=['categorical_crossentropy', B_loss],
                          optimizer='RMSprop',
                          loss_weights=[1,0.01])
...
def B_loss(y_true, y_pred):
    return K.mean(y_pred - y_true, axis=-1)

1 个答案:

答案 0 :(得分:0)

我不明白为什么不做,只要您创建一个将标签(D输出)和Bloss(部分G输出)结合起来的适当y。