- 类torch.optim.Adam实现Adam算法
Adam算法描述
- 输入:
- 初始化:
- for t=1 to ...do
- if maximize:
- else
- if
- if amsgrad
- else
- return
参数
- params(iterable)-- 可迭代的优化参数或者定义参数组的字典;
- lr(float,Tensor,optional)---学习率(默认1e-3),张量LR还没有被所有的算法实现所支持;如果没有指定fused为True或者capturable为True的情况下请使用一个浮点型LR;
- betas(Tuple[float,float],optional)---用于计算运行中的梯度均值和他的平方的系数,默认为(0.9,0.999);
- eps(float,optional)---加和到分母上的项以提高数值稳定性(默认为1e-8);
- weight_decay(float,optional)---权重衰减(L2惩罚)(默认0);
- amsgrad(bool,optional)---该算法是否使用AMSGrad变量;
- foreach(bool,optional)---是否使用foreach实现的优化器;如果未设置,在CUDA上将使用foreach的实现而不是for-loop的实现,因为foreach的实现具有更优化的性能;注意由于张量列表而不是张量的原因,foreach的实现较for-loop实现使用更多的峰值内存;如果内存被限制,优化器一次批处理更少的参数或者将此项设置为False(默认为None);
- maximize(bool,optional)---最大化相对于参数的目标而不是最小化(默认:False);
- capturable(bool,optional)---在CUDA图中捕捉此实例是否安全,设置为True可以损坏未绘图的性能,所以如果不打算图形捕捉实例,将其设置为False(默认为False);
- differentiable(bool,optional)---训练中,优化器迭代步中是否自动梯度,如果不使用,在上下文中step()函数以torch.no_grad()运行;设置为True可能损害性能,因此在训练中如果不想使用自动梯度,将其设置为False(默认False);
- fused(bool,optional)---是否使用fused实现(仅支持CUDA),当前torch.float64,torch.float32,torch.float16,torch.bfloat16被支持(默认None);