Adam与AdamW
1. Adam optimizer
adam优化器是经常使用到的模型训练时的优化器,但是在bert的训练中不起作用,具体表现是,模型的f1上不来。
2. AdamW
transformers
库实现了基于权重衰减的优化器,AdamW
,这个优化器初始化时有6个参数,第一个是params
,可以是torch的Parameter,也可以是一个grouped参数。betas是Adam的beta参数,b1和b2。eps也是Adam为了数值稳定的参数。correct_bias,如果应用到tf的模型上时需要设置为False
class AdamW(Optimizer):"""Implements Adam algorithm with weight decay fix as introduced in`Decoupled Weight Decay Regularization <https://arxiv.org/abs/1711.05101>`__.Parameters:params (:obj:`Iterable[torch.nn.parameter.Parameter]`):Iterable of parameters to optimize or dictionaries defining parameter groups.lr (:obj:`float`, `optional`, defaults to 1e-3):The learning rate to use.betas (:obj:`Tuple[float,float]`, `optional`, defaults to (0.9, 0.999)):Adam's betas parameters (b1, b2).eps (:obj:`float`, `optional`, defaults to 1e-6):Adam's epsilon for numerical stability.weight_decay (:obj:`float`, `optional`, defaults to 0):Decoupled weight decay to apply.correct_bias (:obj:`bool`, `optional`, defaults to `True`):Whether ot not to correct bias in Adam (for instance, in Bert TF repository they use :obj:`False`)."""def __init__(self,params: Iterable[torch.nn.parameter.Parameter],lr: float = 1e-3,betas: Tuple[float, float] = (0.9, 0.999),eps: float = 1e-6,weight_decay: float = 0.0,correct_bias: bool = True,):
3. BertAdam与AdamW的使用区别
# Parameters:
lr = 1e-3
max_grad_norm = 1.0
num_training_steps = 1000
num_warmup_steps = 100
warmup_proportion = float(num_warmup_steps) / float(num_training_steps) # 0.1### Previously BertAdam optimizer was instantiated like this:
optimizer = BertAdam(model.parameters(), lr=lr, schedule='warmup_linear', warmup=warmup_proportion, t_total=num_training_steps)
### and used like this:
for batch in train_data:loss = model(batch)loss.backward()optimizer.step()### In Transformers, optimizer and schedules are splitted and instantiated like this:
optimizer = AdamW(model.parameters(), lr=lr, correct_bias=False) # To reproduce BertAdam specific behavior set correct_bias=False
scheduler = get_linear_schedule_with_warmup(optimizer, num_warmup_steps=num_warmup_steps, num_training_steps=num_training_steps) # PyTorch scheduler
### and used like this:
for batch in train_data:model.train()loss = model(batch)loss.backward()torch.nn.utils.clip_grad_norm_(model.parameters(), max_grad_norm) # Gradient clipping is not in AdamW anymore (so you can use amp without issue)optimizer.step()scheduler.step()optimizer.zero_grad()
https://github.com/huggingface/transformers
Adam与AdamW相关推荐
- 一文告诉你Adam、AdamW、Amsgrad区别和联系 重点
**序言:**Adam自2014年出现之后,一直是受人追捧的参数训练神器,但最近越来越多的文章指出:Adam存在很多问题,效果甚至没有简单的SGD + Momentum好.因此,出现了很多改进的版本, ...
- Adam,AdamW,LAMB优化器原理与代码
参考文献: 1.https://www.fast.ai/2018/07/02/adam-weight-decay/ 2.https://arxiv.org/pdf/1904.00962.pdf 3.h ...
- AdamW优化器简单理解
1.SGD L2 regularization 和 Weight decay 只在SGD优化的情况下是等价的. 2.自适应学习率算法 Adam自动调整学习率,大幅提高了训练速度,也很少需要调整学习率, ...
- 深度学习优化算法的总结与梳理(从 SGD 到 AdamW 原理和代码解读)
作者丨科技猛兽 转自丨极市平台 本文思想来自下面这篇大佬的文章: Juliuszh:一个框架看懂优化算法之异同 SGD/AdaGrad/Adam https://zhuanlan.zhihu.com/ ...
- 各种优化器SGD,AdaGrad,Adam,LBFGS都做了什么?
文章目录 各种优化器SGD,AdaGrad,Adam,LBFGS都做了什么? 1. SGD: 2. SGD+Momentum: 3. NAG(Nesterov Accelerated Gradient ...
- 大梳理!深度学习优化算法:从 SGD 到 AdamW 原理和代码解读
作者丨知乎 科技猛兽 极市平台 编辑 https://zhuanlan.zhihu.com/p/391947979 本文思想来自下面这篇大佬的文章: Juliuszh:一个框架看懂优化算法之异同 ...
- PaddleClas
PaddleClas 主要代码和目录结构如下 benchmark: 文件夹下存放了一些 shell 脚本,主要是为了测试 PaddleClas 中不同模型的速度指标,如单卡训练速度指标.多卡训练速度指 ...
- PyTorch | 优化神经网络训练的17种方法
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | LORENZ KUHN 来源 | 人工智能前沿讲习 编辑 ...
- 让PyTorch训练速度更快,你需要掌握这17种方法
选自efficientdl.com 作者:LORENZ KUHN 机器之心编译 编辑:陈萍 掌握这 17 种方法,用最省力的方式,加速你的 Pytorch 深度学习训练. 近日,Reddit 上一个帖 ...
最新文章
- SAP物料价格评估与成本计算体系
- Skype for Business Server 2015-10-ADFS-2-配置
- jQuery Dom 操作,动态生成dom,绑定事件
- sqlplus连接远程数据库
- c cuda 指定gpu_《CUDA C编程权威指南》——1.3 用GPU输出Hello World-阿里云开发者社区...
- 转【FullPage.js 应用参数参考与简单调用】
- MongoDB之在mac上设置环境变量
- HTML5链接tcpUDP,UDP/TCP协议 网络调试工具源码(C#)
- RPC和MQ对比及其适用/不适用场合
- javaweb四种域对象的应用
- 模板题——数位DP、状态压缩、记忆化搜索
- 十分钟理解Redux中间件
- 端午节公众号文章如何编辑排版可以吸粉引流
- 重新认识Git——抽丝剥茧说Git
- 实现外网Ping通WSL(网卡桥接方式实现)
- 微信模板消息 群发 突破 4条限制
- python与数据分析结合_将Python和R整合进一个数据分析流程
- ipad iphone开发_如何在iPad或iPhone上安装字体
- Api-免费新闻资讯接口
- 封装 电流密度 重布线_半导体封装及其制造方法与流程
热门文章
- 应届生Java面试经验总结
- 斗地主排序以及音乐管理系统
- hadoop2.7.2基于centos完全分布式安装
- 懂数据会营销的健身房会员管理软件
- java计算机毕业设计智慧公寓系统演示录屏2021源码+数据库+系统+lw文档
- 计算机项目经理专业,IT项目经理的对口专业
- java word 乱码_java word 乱码怎么办,_Java_ 少侠科技
- SAP特殊采购类型用途:45.从工厂到MRP 范围的库存转移
- 单纯形法的计算机方法的实现,线性规划问题中单纯形法的计算机求解.pdf
- 企业对java的需求_企业最需要的需求状态是哪一种?