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的梯度下降算法:
m表示冲量因子,l表示学习率;
基于Nesterov冲量的梯度下降算法:
带weight_decay的梯度下降算法:
主要作用是对损失函数增加L2正则项,强烈建议通过了解L2正则化的作用,即如何避免过拟合,权重衰减通过理解。
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中,通过设置随机数种子确保每次代码运行时初始化操作都相同,从而在相同的算法或神经网络程序中,确保运行的结果也相同。
上一篇:
JS实现多线程数据分片下载
下一篇:
U-net及其TensorFlow的实现