# Comparing the function differences between torch.optim.lr_scheduler.StepLR and torch.optim.lr_scheduler.MultiStepLR [![View Source On Gitee](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/website-images/r2.3.q1/resource/_static/logo_source_en.svg)](https://gitee.com/mindspore/docs/blob/r2.3.q1/docs/mindspore/source_en/note/api_mapping/pytorch_diff/PiecewiseConstantLR.md) ## torch.optim.lr_scheduler.StepLR ```python torch.optim.lr_scheduler.StepLR( optimizer, step_size, gamma=0.1, last_epoch=-1, verbose=False ) ``` For more information, see [torch.optim.lr_scheduler.StepLR](https://pytorch.org/docs/1.8.1/optim.html#torch.optim.lr_scheduler.StepLR). ## torch.optim.lr_scheduler.MultiStepLR ```python torch.optim.lr_scheduler.MultiStepLR( optimizer, milestones, gamma=0.1, last_epoch=-1, verbose=False ) ``` For more information, see [torch.optim.lr_scheduler.MultiStepLR](https://pytorch.org/docs/1.8.1/optim.html#torch.optim.lr_scheduler.MultiStepLR). ## mindspore.nn.piecewise_constant_lr ```python mindspore.nn.piecewise_constant_lr( milestone, learning_rates ) ``` For more information, see [mindspore.nn.piecewise_constant_lr](https://mindspore.cn/docs/en/r2.3.0rc1/api_python/nn/mindspore.nn.piecewise_constant_lr.html#mindspore.nn.piecewise_constant_lr). ## Differences PyTorch (torch.optim.lr_scheduler.StepLR): Setting the learning rate in segments. `torch.optim.lr_scheduler.StepLR` multiplies the learning rate by gamma every fixed step_size, by passing in step_size. When `verbose` is True, the relevant information is printed for each update. MindSpore (mindspore.nn.piecewise_constant_lr): Pass in the list of step values of milestones and the corresponding list of learning rate setting values, reach the step values and the learning rate takes the corresponding values. A list of learning rates is eventually returned as input to the optimizer. | Categories | Subcategories | PyTorch | MindSpore | Differences | | ---- | ----- | ------- | --------- | -------------------- | | Parameter | Parameter 1 | optimizer | | Optimizer for PyTorch applications. MindSpore does not have this Parameter | | | Parameter 2 | step_size | milestone | MindSpore segmentation updates the step list of learning rates, and PyTorch uses a fixed step value. | | | Parameter 3 | gamma | | Parameters for PyTorch decay learning rate. MindSpore does not have this Parameter. | | | Parameter 4 | last_epoch | | MindSpore does not have this Parameter. | | | Parameter 5 | | verbose | PyTorch `verbose` prints information about each update when it is True. | | | Parameter 6 | | learning_rates | List of MindSpore settings for learning rate | PyTorch (torch.optim.lr_scheduler.MultiStepLR): `torch.optim.lr_scheduler.MultiStepLR` reaches the step value by passing in a list of step values for milestones, and the learning rate is multiplied by gamma. When used, the optimizer is used as input and the `step` method is called during the training process to update the values. `verbose` prints information about each update when it is True. MindSpore (mindspore.nn.piecewise_constant_lr): Pass in the list of step values for milestones and the corresponding list of learning rate setting values, reach the step values and the learning rate takes the corresponding values. A list of learning rates is eventually returned as input to the optimizer. | Categories | Subcategories | PyTorch | MindSpore | Differences | | ---- | ----- | ------- | --------- | -------------------- | | Parameter | Parameter 1 | optimizer | | Optimizer for PyTorch applications. MindSpore does not have this Parameter | | | Parameter 2 | milestones | milestone | Segmentation updates the step list of learning rates, with the same functions and different parameter names | | | Parameter 3 | gamma | | Parameters for PyTorch decay learning rate. MindSpore does not have this Parameter. | | | Parameter 4 | last_epoch | | MindSpore does not have this Parameter. | | | Parameter 5 | | verbose | PyTorch `verbose` prints information about each update when it is True. MindSpore does not have this Parameter.| | | Parameter 6 | | learning_rates | List of MindSpore settings for learning rate | ## Code Example ```python from mindspore import nn # In MindSpore: milestone = [2, 5, 10] learning_rates = [0.1, 0.05, 0.01] output = nn.piecewise_constant_lr(milestone, learning_rates) print(output) # Out: # [0.1, 0.1, 0.05, 0.05, 0.05, 0.01, 0.01, 0.01, 0.01, 0.01] # In torch: import numpy as np import torch from torch import optim model = torch.nn.Sequential(torch.nn.Linear(20, 1)) optimizer = optim.SGD(model.parameters(), 0.1) # Use step_lr step_lr = optim.lr_scheduler.StepLR(optimizer, step_size=2, gamma=0.9) # Use multi_step_lr multi_step_lr = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[30, 80], gamma=0.9) ```