Schedules

Module contents

class olympus.optimizers.schedules.LRSchedule(name=None, *, schedule=None, optimizer=None, **kwargs)[source]

Bases: object

Lazy LRSchedule that allows you to first fetch the supported parameters using get_space and then initialize the underlying schedule using init_optimizer

Parameters:
name: str

Name of a registered schedule

schedule: LRSchedule

Custom schedule, mutually exclusive with :param name

Raises:
RegisteredLRSchedulerNotFound

when using a name of an known schedule

MissingArgument:

if name nor schedule were not set

Examples

from olympus.optimizers import Optimizer
optimizer = Optimizer('sgd')
schedule = LRSchedule('exponential')
schedule.get_space()
# {'gamma': 'loguniform(0.97, 1)'}
schedule.init(optimizer, gamma=0.97)
Attributes:
defaults

Return default hyper parameters

lr_scheduler

Methods

epoch(epoch[, metrics]) Called after every epoch to update LR
get_current_space() Get currently defined parameter space
get_space() Return the missing hyper parameters required to initialize the LR schedule
init([optimizer, override]) Initialize the LR schedule with the given hyper parameters
step(step[, metrics]) Called every step/batch to update LR
get_lr  
load_state_dict  
state_dict  
defaults

Return default hyper parameters

epoch(epoch, metrics=None)[source]

Called after every epoch to update LR

get_current_space()[source]

Get currently defined parameter space

get_lr()[source]
get_space()[source]

Return the missing hyper parameters required to initialize the LR schedule

init(optimizer=None, override=False, **kwargs)[source]

Initialize the LR schedule with the given hyper parameters

load_state_dict(state_dict, strict=True)[source]
lr_scheduler
state_dict(destination=None, prefix='', keep_vars=False)[source]
step(step, metrics=None)[source]

Called every step/batch to update LR

exception olympus.optimizers.schedules.RegisteredLRSchedulerNotFound[source]

Bases: Exception

exception olympus.optimizers.schedules.UninitializedLRScheduler[source]

Bases: Exception

olympus.optimizers.schedules.known_schedule()[source]
olympus.optimizers.schedules.register_schedule(name, factory, override=False)[source]