mmedit.engine.optimizers
¶
Package Contents¶
Classes¶
OptimizerConstructor for GAN models. This class construct optimizer for |
|
OptimizerConstructor for PGGAN models. Set optimizers for each |
|
OptimizerConstructor for SinGAN models. Set optimizers for each |
- class mmedit.engine.optimizers.MultiOptimWrapperConstructor(optim_wrapper_cfg: dict, paramwise_cfg=None)[source]¶
OptimizerConstructor for GAN models. This class construct optimizer for the submodules of the model separately, and return a
mmengine.optim.OptimWrapperDict
.Example
>>> # build GAN model >>> model = dict( >>> type='GANModel', >>> num_classes=10, >>> generator=dict(type='Generator'), >>> discriminator=dict(type='Discriminator')) >>> gan_model = MODELS.build(model) >>> # build constructor >>> optim_wrapper = dict( >>> constructor='MultiOptimWrapperConstructor', >>> generator=dict( >>> type='OptimWrapper', >>> accumulative_counts=1, >>> optimizer=dict(type='Adam', lr=0.0002, >>> betas=(0.5, 0.999))), >>> discriminator=dict( >>> type='OptimWrapper', >>> accumulative_counts=1, >>> optimizer=dict(type='Adam', lr=0.0002, >>> betas=(0.5, 0.999)))) >>> optim_dict_builder = MultiOptimWrapperConstructor(optim_wrapper) >>> # build optim wrapper dict >>> optim_wrapper_dict = optim_dict_builder(gan_model)
- Parameters
optim_wrapper_cfg_dict (dict) – Config of the optimizer wrapper.
paramwise_cfg (dict) – Config of parameter-wise settings. Default: None.
- class mmedit.engine.optimizers.PGGANOptimWrapperConstructor(optim_wrapper_cfg: dict, paramwise_cfg: Optional[dict] = None)[source]¶
OptimizerConstructor for PGGAN models. Set optimizers for each stage of PGGAN. All submodule must be contained in a
torch.nn.ModuleList
named ‘blocks’. And we access each submodule by MODEL.blocks[SCALE], where MODLE is generator or discriminator, and the scale is the index of the resolution scale.More detail about the resolution scale and naming rule please refers to
PGGANGenerator
andPGGANDiscriminator
.Example
>>> # build PGGAN model >>> model = dict( >>> type='ProgressiveGrowingGAN', >>> data_preprocessor=dict(type='GANDataPreprocessor'), >>> noise_size=512, >>> generator=dict(type='PGGANGenerator', out_scale=1024, >>> noise_size=512), >>> discriminator=dict(type='PGGANDiscriminator', in_scale=1024), >>> nkimgs_per_scale={ >>> '4': 600, >>> '8': 1200, >>> '16': 1200, >>> '32': 1200, >>> '64': 1200, >>> '128': 1200, >>> '256': 1200, >>> '512': 1200, >>> '1024': 12000, >>> }, >>> transition_kimgs=600, >>> ema_config=dict(interval=1)) >>> pggan = MODELS.build(model) >>> # build constructor >>> optim_wrapper = dict( >>> generator=dict(optimizer=dict(type='Adam', lr=0.001, >>> betas=(0., 0.99))), >>> discriminator=dict( >>> optimizer=dict(type='Adam', lr=0.001, betas=(0., 0.99))), >>> lr_schedule=dict( >>> generator={ >>> '128': 0.0015, >>> '256': 0.002, >>> '512': 0.003, >>> '1024': 0.003 >>> }, >>> discriminator={ >>> '128': 0.0015, >>> '256': 0.002, >>> '512': 0.003, >>> '1024': 0.003 >>> })) >>> optim_wrapper_dict_builder = PGGANOptimWrapperConstructor( >>> optim_wrapper) >>> # build optim wrapper dict >>> optim_wrapper_dict = optim_wrapper_dict_builder(pggan)
- Parameters
optim_wrapper_cfg (dict) – Config of the optimizer wrapper.
paramwise_cfg (Optional[dict]) – Parameter-wise options.
- class mmedit.engine.optimizers.SinGANOptimWrapperConstructor(optim_wrapper_cfg: dict, paramwise_cfg: Optional[dict] = None)[source]¶
OptimizerConstructor for SinGAN models. Set optimizers for each submodule of SinGAN. All submodule must be contained in a
torch.nn.ModuleList
named ‘blocks’. And we access each submodule by MODEL.blocks[SCALE], where MODLE is generator or discriminator, and the scale is the index of the resolution scale.More detail about the resolution scale and naming rule please refers to
SinGANMultiScaleGenerator
andSinGANMultiScaleDiscriminator
.Example
>>> # build SinGAN model >>> model = dict( >>> type='SinGAN', >>> data_preprocessor=dict( >>> type='GANDataPreprocessor', >>> non_image_keys=['input_sample']), >>> generator=dict( >>> type='SinGANMultiScaleGenerator', >>> in_channels=3, >>> out_channels=3, >>> num_scales=2), >>> discriminator=dict( >>> type='SinGANMultiScaleDiscriminator', >>> in_channels=3, >>> num_scales=3)) >>> singan = MODELS.build(model) >>> # build constructor >>> optim_wrapper = dict( >>> generator=dict(optimizer=dict(type='Adam', lr=0.0005, >>> betas=(0.5, 0.999))), >>> discriminator=dict( >>> optimizer=dict(type='Adam', lr=0.0005, >>> betas=(0.5, 0.999)))) >>> optim_wrapper_dict_builder = SinGANOptimWrapperConstructor( >>> optim_wrapper) >>> # build optim wrapper dict >>> optim_wrapper_dict = optim_wrapper_dict_builder(singan)
- Parameters
optim_wrapper_cfg (dict) – Config of the optimizer wrapper.
paramwise_cfg (Optional[dict]) – Parameter-wise options.