megengine.optimizer package

megengine.optimizer.adadelta

class megengine.optimizer.adadelta.Adadelta(params, lr=1.0, rho=0.9, eps=1e-06, weight_decay=0.0)[源代码]

基类:megengine.optimizer.optimizer.Optimizer

实现Adadelta算法。

这已经在 “ADADELTA: An Adaptive Learning Rate Method” <https://arxiv.org/abs/1212.5701> _ 中被提出。

参数
  • params (Union[Iterable[Parameter], dict]) – 可迭代对象,可以是一组待优化的参数,或定义几组参数的dict类型。

  • lr (float) – 在将delta应用于参数之前缩放比例系数。默认: 1.0

  • rho (float) – 用于计算平方梯度的移动平均值(running average)的系数。默认: 0.9

  • eps (float) – 加到分母上以提高数值稳定性的值。默认: 1e-6

  • weight_decay (float) – 权重衰减(L2惩罚)。默认:0

megengine.optimizer.adagrad

class megengine.optimizer.adagrad.Adagrad(params, lr=0.01, lr_decay=0.0, eps=1e-10, weight_decay=0.0)[源代码]

基类:megengine.optimizer.optimizer.Optimizer

实现Adagrad算法。

这已经在 “Adaptive Subgradient Methods for Online Learning and Stochastic Optimization” <http://jmlr.org/papers/v12/duchi11a.html> _ 中被提出。

参数
  • params (Union[Iterable[Parameter], dict]) – 可迭代对象,可以是一组待优化的参数,或定义几组参数的dict类型。

  • lr (float) – 在将delta应用于参数之前缩放比例系数。默认: 1e-2

  • lr_decay (float) – 学习率衰减的乘数因子。默认: 0

  • eps (float) – 加到分母上以提高数值稳定性的值。默认: 1e-10

  • weight_decay (float) – 权重衰减(L2惩罚)。默认:0

megengine.optimizer.adam

class megengine.optimizer.adam.Adam(params, lr, betas=0.9, 0.999, eps=1e-08, weight_decay=0.0)[源代码]

基类:megengine.optimizer.optimizer.Optimizer

实现 “Adam: A Method for Stochastic Optimization” 中提出的Adam算法。

参数
  • params (Union[Iterable[Parameter], dict]) – 可迭代对象,可以是一组待优化的参数,或定义几组参数的dict类型。

  • lr (float) – 学习率(learning rate)。

  • betas (Tuple[float, float]) – 一组系数,用于计算运行时梯度的平均值及其平方值。默认:(0.9,0.999)

  • eps (float) – 加到分母上以提高数值稳定性的值,默认:1e-8

  • weight_decay (float) – 权重衰减(L2惩罚)。默认:0

megengine.optimizer.lr_scheduler

class megengine.optimizer.lr_scheduler.LRScheduler(optimizer, current_epoch=- 1)[源代码]

基类:object

所有学习率调度器的基类。

参数
  • optimizer (Optimizer) – 包装后的优化器。

  • current_epoch (int) – 当前epoch的索引。默认:-1

get_lr()[源代码]

计算当前调度器(scheduler)的学习率。

load_state_dict(state_dict)[源代码]

加载调度器(scheduler)的状态。

参数

state_dict (dict) – 调度器(scheduler)的状态。

state_dict()[源代码]

dict 的形式返回调度器(非优化器)的状态。对于调度器的 self.__dict__ 中的每一个变量,都会在其中有对应的条目。

step(epoch=None)[源代码]

megengine.optimizer.multi_step_lr

class megengine.optimizer.multi_step_lr.MultiStepLR(optimizer, milestones, gamma=0.1, current_epoch=- 1)[源代码]

基类:megengine.optimizer.lr_scheduler.LRScheduler

以gamma为倍率阶梯式衰减各参数组的学习率

当epoch的数目达到milestones之一时,才会执行。

参数
  • optimizer (Optimizer) – 包装后的优化器。

  • milestones (Iterable[int]) – epoch索引列表。必须按递增排序。

  • gamma (float) – 学习率衰减的乘数因子。默认:0.1

  • current_epoch (int) – 当前epoch的索引。默认:-1

get_lr()[源代码]

计算当前调度器(scheduler)的学习率。

load_state_dict(state_dict)[源代码]

加载调度器(scheduler)的状态。

参数

state_dict (dict) – 调度器(scheduler)的状态。

state_dict()[源代码]

dict 的形式返回调度器(非优化器)的状态。对于调度器的 self.__dict__ 中的每一个变量,都会在其中有对应的条目。

megengine.optimizer.optimizer

class megengine.optimizer.optimizer.Optimizer(params, defaults)[源代码]

基类:object

所有优化器的基类。

参数
  • params (Union[Iterable[Parameter], dict]) – 指定应该优化哪些张量。

  • defaults (dict) – 一个含有优化器默认参数的dict,如含有学习率(learning rate)和动量(momentum)。

add_param_group(param_group)[源代码]

Optimizerparam_groups 中添加一组参数。

该方法可以在微调(fine-tuning)预训练网络时发挥作用,在训练过程中,冻结层通过此方法加入到 Optimizer 中变为可训练层。

参数

param_group (dict) – 指定了应与参数组一起进行优化的张量。

backward(loss)[源代码]
bcast_param()[源代码]
clear_grad()[源代码]

把所有参数的梯度属性设置为 None。

load_state_dict(state)[源代码]

加载优化器状态。

参数

state (dict) – 优化器状态。应为调用 state_dict() 返回的对象。

state_dict()[源代码]

导出优化器状态。

返回类型

Dict

返回

优化器状态。可通过 load_state_dict() 来加载。

step()[源代码]

执行单一优化步骤。

zero_grad()[源代码]

1.0 版后已移除.

使用 clear_grad

megengine.optimizer.sgd

class megengine.optimizer.sgd.SGD(params, lr, momentum=0.0, weight_decay=0.0)[源代码]

基类:megengine.optimizer.optimizer.Optimizer

实现随机梯度下降。

Nesterov momentum的实现是基于 “On the importance of initialization and momentum in deep learning” 中的公式。

参数
  • params (Union[Iterable[Parameter], dict]) – 可迭代对象,可以是一组待优化的参数,或定义几组参数的dict类型。

  • lr (float) – 学习率(learning rate)。

  • momentum (float) – momentum因子。默认:0.0

  • weight_decay (float) – 权重衰减(L2范数惩罚)。默认:0.0