# ChainedScheduler

Source: https://www.tensorplay.cn/docs/generated/tensorplay.optim.lr_scheduler.ChainedScheduler.html

# ChainedScheduler

class tensorplay.optim.lr_scheduler.ChainedScheduler(schedulers: Sequence[[LRScheduler](tensorplay.optim.lr_scheduler.LRScheduler.html#tensorplay.optim.lr_scheduler.LRScheduler)], optimizer: [Optimizer](tensorplay.optim.optimizer.Optimizer.html#tensorplay.optim.optimizer.Optimizer) | [None](https://docs.python.org/3/library/constants.html#None) = None)[[source]](../_modules/tensorplay/optim/lr_scheduler.html#ChainedScheduler)

Chains a list of learning rate schedulers.

Takes in a sequence of chainable learning rate schedulers and calls their
step() functions consecutively in just one call to step().

Parameters:

- schedulers ( sequence ) – sequence of chained schedulers.

- optimizer ([Optimizer](tensorplay.optim.optimizer.Optimizer.html#tensorplay.optim.optimizer.Optimizer) , optional ) – Wrapped optimizer. Default: None.

Example

```
>>> # xdoctest: +SKIP
>>> # Assuming optimizer uses lr = 0.05 for all groups
>>> # lr = 0.005      if epoch == 0
>>> # lr = 0.00450    if epoch == 1
>>> # lr = 0.00405    if epoch == 2
>>> # ...
>>> # lr = 0.000675   if epoch == 19
>>> # lr = 0.006078   if epoch == 20
>>> # lr = 0.005470   if epoch == 21
>>> scheduler1 = ConstantLR(optimizer, factor=0.1, total_iters=20)
>>> scheduler2 = ExponentialLR(optimizer, gamma=0.9)
>>> scheduler = ChainedScheduler([scheduler1, scheduler2], optimizer=optimizer)
>>> for epoch in range(100):
>>>     train(...)
>>>     validate(...)
>>>     scheduler.step()
```

get_last_lr() &#x2192; [list](https://docs.python.org/3/library/stdtypes.html#list)[[float](https://docs.python.org/3/library/functions.html#float) | TensorBase]

Get the most recent learning rates computed by this scheduler.

Returns:

A [list](https://docs.python.org/3/library/stdtypes.html#list) of learning rates with entries
for each of the optimizer’s
param_groups, with the same types as
their group["lr"]s.

Return type:

[list](https://docs.python.org/3/library/stdtypes.html#list)[[float](https://docs.python.org/3/library/functions.html#float) | Tensor]

Note

The returned Tensors are copies, and never alias
the optimizer’s group["lr"]s.

get_lr() &#x2192; [list](https://docs.python.org/3/library/stdtypes.html#list)[[float](https://docs.python.org/3/library/functions.html#float) | TensorBase]

Compute the next learning rate for each of the optimizer’s
param_groups.

Returns:

A [list](https://docs.python.org/3/library/stdtypes.html#list) of learning rates for each of
the optimizer’s param_groups with the
same types as their current group["lr"]s.

Return type:

[list](https://docs.python.org/3/library/stdtypes.html#list)[[float](https://docs.python.org/3/library/functions.html#float) | Tensor]

Note

If you’re trying to inspect the most recent learning rate, use
[get_last_lr()](#tensorplay.optim.lr_scheduler.ChainedScheduler.get_last_lr) instead.

Note

The returned Tensors are copies, and never alias
the optimizer’s group["lr"]s.

load_state_dict(state_dict: [dict](https://docs.python.org/3/library/stdtypes.html#dict)[[str](https://docs.python.org/3/library/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)]) &#x2192; [None](https://docs.python.org/3/library/constants.html#None)[[source]](../_modules/tensorplay/optim/lr_scheduler.html#ChainedScheduler.load_state_dict)

Load the scheduler’s state.

Parameters:

state_dict ([dict](https://docs.python.org/3/library/stdtypes.html#dict)) – scheduler state. Should be an object returned
from a call to [state_dict()](#tensorplay.optim.lr_scheduler.ChainedScheduler.state_dict).

state_dict() &#x2192; [dict](https://docs.python.org/3/library/stdtypes.html#dict)[[str](https://docs.python.org/3/library/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)][[source]](../_modules/tensorplay/optim/lr_scheduler.html#ChainedScheduler.state_dict)

Return the state of the scheduler as a [dict](https://docs.python.org/3/library/stdtypes.html#dict).

It contains an entry for every variable in self.__dict__ which
is not the optimizer.
The wrapped scheduler states will also be saved.

step() &#x2192; [None](https://docs.python.org/3/library/constants.html#None)[[source]](../_modules/tensorplay/optim/lr_scheduler.html#ChainedScheduler.step)

Perform a step.
