深度学习,pytorch 学习笔记

pytorch:
torch:主模块,用来搭建神经网络的。
torchvision: 辅模块,有数据库,和一些训练好的神经网络可以直接用。(VGG, AlexNet, ResNet)

和numpy相互转换,数据类型,运算。

变量Variable, 三部分:1。data,(相当于Tensor), 2. grad:(当前变量的梯度缓存区) 3. creator: 这个变量的创造节点。

Variable在计算时,后台默默搭建着一个庞大的系统,叫计算图(computational graph), 将所有的计算步骤(节点)都连接起来,最后,进行反向误差传递时,一次性将所有variable里面的修改幅度(梯度),都计算出来。
Tensor:只是相当于一个数据结构。

nn.Linear(in, out), in:每个输入样本的大小,(n, in), out:每个输出样本的小,(n, out)

深度学习 优化器:
梯度下降(Gradient Descent)
基于随机梯度下降(SGD, Stochastic Gradient Descent)的优化,梯度下降就好比一个人想从高山上(start point),奔向山谷最低点(minimum), 用最快的方式(steppest),

SGD 基本公式。学习率 系数/
在这里插入图片描述
基本的mini-batch SGD优化算法可以取得还算不错的成绩。
仍存在的问题: 1. 初始学习率难以选择;2. 学习率调整不灵活, 3. 同一个学习率被应用到各个参数, 4. 高度非凸的误差函数优化过程,如何避免陷入大量的局部次优解或鞍点。

AdaGrad(自适应梯度,Adaptive Gradient):对每个不同的参数调整不同的学习率,对频繁变化的参数以更小的步长进行更新,稀疏的参数以更大的步长进行更新。
区别在于:增加了分母:梯度平方累积的平方根。频繁更新的分母偏大,更新步长变小;
平方根分母项 相当于对学习率进行了自动调整, 再乘以本次梯度; 默认学习率0.01, 一般就可以完成很好的收敛。
优势:
对于数据分布稀疏的场景,能更好利用稀疏梯度信息,比标准SGD更好的收敛;
缺点:
分母项不断累积,时间步长增加,分母项越来越打,导致学习率急剧减小变得太小,无法进行有效更新。

RMSProp:
计算梯度平方的指数移动平均数
在这里插入图片描述
在这里插入图片描述
优点:克服AdaGrad梯度急剧减小的问题,拥有优秀的学习率自适应能力。在不稳定的目标函数下,表现更良好。

Adam优化器:结合了前面两个算法的优点。对梯度一阶矩估计(即梯度均值)和二阶矩估计(梯度的未中心化的方差)进行综合考虑,计算出更新步长。(在很多场合 成为主流优化算法)。
优点: 参数更新不受梯度伸缩变换影响,更新步长被限制在大致范围内(初始学习率),能自然实现步长退火过程(自动调整学习率)。通常无需调整,

Adam缺陷:效果比 带动量的SGD效果差。优化:1.增加权重衰减项,避免产生过大参数;2.修正指数移动均值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值