Tensorflow GAN中的冻结鉴别器层

Tensorflow GAN中的冻结鉴别器层,tensorflow,keras,neural-network,generative-adversarial-network,Tensorflow,Keras,Neural Network,Generative Adversarial Network,我正试图在Keras中实现一个新的应用程序,但我相信这个问题更普遍地与GANs和冻结层有关 据我所知,我需要三种型号: 细化器,用于处理合成图像以使其更逼真。(在其他GAN架构中,这可能是接受随机噪声的发生器。) 鉴别器,用于处理图像并将其分类为合成图像或真实图像 一种组合模型,将合成图像通过细化器,然后将细化后的图像送入鉴别器 在组合模型中,我们希望将鉴别器层冻结,以便在训练组合模型时,只更新细化器层 另外,我们只训练鉴别器模型,其中显然不应冻结层。鉴别器模型和组合模型的层应共享权重,以便两者

我正试图在Keras中实现一个新的应用程序,但我相信这个问题更普遍地与GANs和冻结层有关

据我所知,我需要三种型号:

  • 细化器,用于处理合成图像以使其更逼真。(在其他GAN架构中,这可能是接受随机噪声的发生器。)

  • 鉴别器,用于处理图像并将其分类为合成图像或真实图像

  • 一种组合模型,将合成图像通过细化器,然后将细化后的图像送入鉴别器

  • 在组合模型中,我们希望将鉴别器层冻结,以便在训练组合模型时,只更新细化器层

    另外,我们只训练鉴别器模型,其中显然不应冻结层。鉴别器模型和组合模型的层应共享权重,以便两者都得到更新

    以下是我目前掌握的情况:

    细化器模型=制作细化器模型(输入形状=(img\u高度、img\u宽度、img\u通道))
    鉴别器模型=生成鉴别器模型(输入形状=细化器模型。输出形状[1:])
    #创建具有冻结鉴别器层的组合模型
    合成\u图像\u张量=层。输入(细化器\u模型。输入\u形状[1:])
    细化器模型输出=细化器模型(合成图像张量)
    组合输出=鉴别器模型(澄清器模型输出)
    组合_模型=模型。模型(
    输入=合成图像张量,
    输出=[refiner\u model\u output,combined\u output],
    name='combined'
    )
    
    如何冻结组合模型中的鉴别器层,而不冻结仅鉴别器模型中的鉴别器层


    委员会明确建议如下:

    refiner\u model.compile(…)
    鉴别器_model.compile(…)
    鉴别器_model.trainable=错误
    组合_model.compile(…)
    
    但是当我打印出
    discriminator\u model.summary()
    时,参数的数量增加了一倍

    Total params: 151,812
    Trainable params: 75,906
    Non-trainable params: 75,906
    
    然后我会得到,并最终失败。

    我相信
    .compile()->.trainable->.summary()
    会给出不正确的结果,所以这有点危险。我相信
    .compile()->.trainable->.summary()
    会给出不正确的结果,所以这有点危险。