鉴别器的单独优化器和对抗设置中的模型的其余部分
Separate optimizer for discriminator and the rest of the model in adversarial setting
我有一个包含以下组件的模型。
- 嵌入层
- 编码器
- 发电机
- 判别器
- 前馈神经网络
我想定义两个优化器。一个仅用于鉴别器,一个用于其余部分。我正在做以下事情。
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 一个生成器。如果您想按照自己的意愿修改生成器,则无论如何都必须将其转换为列表。
我有一个包含以下组件的模型。
- 嵌入层
- 编码器
- 发电机
- 判别器
- 前馈神经网络
我想定义两个优化器。一个仅用于鉴别器,一个用于其余部分。我正在做以下事情。
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 一个生成器。如果您想按照自己的意愿修改生成器,则无论如何都必须将其转换为列表。