Pytorch学习笔记--常用函数torch.optim.SGD()总结3

1--torch.optim.SGD()函数拓展

import torch

LEARNING_RATE = 0.01  # 梯度下降学习率
MOMENTUM = 0.9  # 冲量大小
WEIGHT_DECAY = 0.0005 # 权重衰减系数

optimizer = torch.optim.SGD(
    net.parameters(),
    lr = LEARNING_RATE,
    momentum = MOMENTUM,
    weight_decay = WEIGHT_DECAY,
    nesterov = True
    )

参数解释:lr表示学习率;momentum表示冲量因子;weight_decay表示权重衰减系数(将使用L2正则项);nesterov表示使用Nesterov冲量;

常规梯度下降算法:​​​​​​

l表示学习率; J(θ)表示损失函数;▽表示求梯度;

momentum的梯度下降算法: 

Pytorch学习笔记--常用函数torch.optim.SGD()总结3_第1张图片

 m表示冲量因子,l表示学习率;

基于Nesterov冲量的梯度下降算法:

Pytorch学习笔记--常用函数torch.optim.SGD()总结3_第2张图片

weight_decay的梯度下降算法:

主要作用是对损失函数增加L2正则项,强烈建议通过参考链接1了解L2正则化的作用,即如何避免过拟合,权重衰减通过参考链接2​​​​​​​理解。

2--torch.manual_seed()函数和torch.cuda.manual_seed()函数

torch.manual_seed()函数:为CPU设置种子,确保每次实验生成的随机数固定,即初始化相同;

torch.cuda.manual_seed()函数:为当前GPU设置种子,作用与torch.manual_seed()函数相同;

torch.cuda.manual_seed_all()函数:为所有GPU设置种子。

在神经网络中,参数默认是进行随机初始化的。不同的初始化参数往往会导致不同的结果,当获得较好结果时我们通常希望这个结果是可以复现的。在pytorch中,通过设置随机数种子确保每次代码运行时初始化操作都相同,从而在相同的算法或神经网络程序中,确保运行的结果也相同。参考链接1​​​​​​​参考链接2

 
  

你可能感兴趣的:(Pytorch学习笔记,pytorch,python,深度学习)