I have a model with the following components.
- embedding layer
- encoder
- generator
- discriminator
- feed-forward neural network
I want to define two optimizers. One for the discriminator only and one for the rest. I am doing the following.
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))
Is there any better way to do the same? For example, can I take the difference between model.parameters()
and model.discriminator.parameters()
? If yes, how can I do that?