SLDgen / painter_optimizer.py
Mightypeacock's picture
Add SLDgen module: SLDgen/SLDgen/painter/painter_optimizer.py
58db33c
Raw History Blame Contribute Delete
1.2 kB
import torch
class PainterOptimizer:
"""Manage optimizer creation and stepping for a renderer."""
def __init__(self, args, renderer):
self.renderer = renderer
self.args = args
def init_optimizers(self):
"""Build optimizer param groups from renderer infos and instantiate optimizer."""
param_infos = self.renderer.parameters()
# create per-parameter-group dicts with scaled learning rates
param_groups = [
{
"params": [info["params"][0]],
"name": info["name"],
"lr": self.args.lr * info["lr_ratio"],
}
for info in param_infos
]
# instantiate optimizer based on configured name
self.optim = torch.optim.Adam(param_groups, betas=(0.9, 0.9), eps=1e-6)
def zero_grad_(self):
"""Zero gradients on the optimizer's parameter groups."""
self.optim.zero_grad()
def step_(self):
"""Perform an optimizer step to update parameters."""
self.optim.step()
def get_lr(self):
"""Return the learning rate of the first parameter group."""
return self.optim.param_groups[0]["lr"]