google-research/bert官方代码中的坑_run_classifier_效果很差原因

本文分析了google-research/bert中run_classifier.py的常见问题,重点关注学习率策略,包括warmup、lr decay和二次训练的注意事项,并讨论了训练时数据打乱的重要性。建议在调整batch_size或进行二次训练时,适当修改num_train_epochs以保持学习率的有效性,并在数据处理阶段确保足够的shuffle操作。
摘要由CSDN通过智能技术生成

简介

bert官方代码google-research/bert中有很多很强的设定,稍有改动就会导致结果很差。此文档简单总结如下。
google-research/bert版本:d66a146

该文档撰写时间:2019年4月11日

主要基于任务:run_classifier.py

一、学习率相关

代码使用了带warmup和decay的Adam(AdamWeightDecayOptimizer),这两个参数策略是动态学习率常用的,问题在于,官方代码中此两参数跟命令行参数num_train_epochs-训练轮数强关联,如果盲目修改代码而不恰当地设置num_train_epochs参数就会很糟糕。

一个重要、多次用的参数:训练总步数num_train_steps=num_train_steps = int(len(train_examples) / FLAGS.train_batch_size * FLAGS.num_train_epochs)是由样本数、batch_size和命令行参数num_train_epochs轮数计算出来的。【很重要,一定注意】

1.1 warmup

在训练的开始阶段使用较小的学习率再逐渐调整到预设初始学习率对训练有一定的帮助(某共识,出处未寻)。代码中使用了线性的调整,

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值