鉴别器的单独优化器和对抗设置中的模型的其余部分

Separate optimizer for discriminator and the rest of the model in adversarial setting

我有一个包含以下组件的模型。

  1. 嵌入层
  2. 编码器
  3. 发电机
  4. 判别器
  5. 前馈神经网络

我想定义两个优化器。一个仅用于鉴别器,一个用于其余部分。我正在做以下事情。

optimizers = []
model_params = chain(model.embedding.parameters(), model.encoder.parameters(), 
                            model.generator.parameters(), model.ffnn.parameters())
optimizers.append(optim.Adam(model_params, args.lr))
optimizers.append(optim.Adam(model.discriminator.parameters(), args.lr))

有没有更好的方法来做同样的事情?例如,我可以区分 model.parameters()model.discriminator.parameters() 吗?如果是,我该怎么做?

不,因为 model.parameters() returns 一个生成器。如果您想按照自己的意愿修改生成器,则无论如何都必须将其转换为列表。