ernie和Bert的参数理解
BERT参数的理解
bert参数量隐藏在每一层的shape当中。把如上shape累加即为全部参数量。
总参数量=input_parm+12*encoder_parm=(30522+512+2)768+12(76812643+12643+6412768+768+768+768+7683072+3072+3072*768+768+768+768)=101675520个
参数简单解释如下:input_parm=(30522+512+2)*768就是输入embeding层对应的参数,分别对应的是**token-embedding,position-embedding,segment-embedding。**其中768是embedding的维度,也就是有768个特征。
后面的encoder_parm表示每个encoder部分的参数量。
**768*12 *64 *3 +12 *64 *3:**是Self-Attention自注意层12个多头Q,K,V对应的参数量;
**64 *12 *768 +768:**是将自注意层12个多头输出进行拼接后接全连接层输出对应的参数量;
**768 +768:**是自注意层后接归一层(layer norm)的参数beta和gamma;
**768 *3072 +3072:**是前馈神经网络进行调制生成全连接层输出对应的参数;
**3072 *768 +768:**则是前馈神经网络进行解调生成全连接层输出对应的参数;
**768 +768:**是前馈神经网络层后接归一层的参数beta和gamma
ERNIE的参数理解
总参数量=input_parm+12*encoder_parm=(18000+513+2)768+12(76812643+12643+6412768+768+768+768+7683072+3072+3072*768+768+768+768)=101675520个
参数简单解释如下:input_parm=(18000+513+2)*768就是输入embeding层对应的参数,分别对应的是token-embedding, position-embedding, segment-embedding。其中768是embedding的维度,也就是有768个特征。
后面的encoder_parm表示每个encoder部分的参数量。
**768 *12 *64 *3 +12 *64 *3:**是自注意层12个多头Q,K,V对应的参数量;
**64 *12 *768 +768:**是将自注意层12个多头输出进行拼接后接全连接层输出对应的参数量;
**768 +768:**是自注意层后接归一层的参数beta和gamma;
**768 *3072 +3072:**是前馈神经网络进行调制生成全连接层输出对应的参数;
**3072 *768 +768:**则是前馈神经网络进行解调生成全连接层输出对应的参数;
**768 +768:**是前馈神经网络层后接归一层的参数beta和gamma
参数具体含义:
vocab_size: 18000 词表大小
hidden_size: 768 隐藏层神经元数
num_hidden_layers: 12 Transformer encoder中的隐藏层数
num_attention_heads: 12 multi-head attention 的head数
intermediate_size: encoder的“中间”隐层神经元数(例如feed-forward layer)
hidden_act: relu 隐藏层激活函数
hidden_dropout_prob: 0.1 隐层dropout率
attention_probs_dropout_prob: 0.1 注意力部分的dropout
max_position_embeddings: 513 最大位置编码
type_vocab_size: 2 token_type_ids的词典大小
initializer_range: 0.02 truncated_normal_initializer初始化方法的stdev
这里要注意一点,可能刚看的时候对type_vocab_size这个参数会有点不理解,其实就是在next sentence prediction任务里的Segment A和 Segment B。在下载的bert_config.json或ernie_config.json文件里也有说明,默认值应该为2。
参考链接:参考链接
ernie和Bert的参数理解相关推荐
- 基于TensorRT的BERT实时自然语言理解(下)
基于TensorRT的BERT实时自然语言理解(下) BERT Inference with TensorRT 请参阅Python脚本bert_inference.py还有详细的Jupyter not ...
- 基于TensorRT的BERT实时自然语言理解(上)
基于TensorRT的BERT实时自然语言理解(上) 大规模语言模型(LSLMs)如BERT.GPT-2和XL-Net为许多自然语言理解(NLU)任务带来了最先进的精准飞跃.自2018年10月发布以来 ...
- 我跑了ERNIE和BERT两个模型,结果出乎意料......
BERT和ERNIE,NLP领域近来最受关注的2大模型究竟怎么样? 刚刚有人实测比拼了一下,结果在中文语言环境下,结果令人意外又惊喜. 具体详情究竟如何?不妨一起围观下这篇技术评测. 写在前面 随着2 ...
- 《预训练周刊》第30期:谷歌首次展示新版语言模型BERT,参数达4810亿个
关于周刊 本期周刊,我们选择了9篇预训练相关的论文,涉及文本更正.模型适配.实体标记.视频理解.三维建模.行人识别.医学实体识别.分子分布和目标检测的探索.此外,在研究动态方面,我们选择了1篇预训练资 ...
- BERT 词向量理解及训练更新
1.BERT 词向量理解 在预训练阶段中,词向量是在不断更新的,而在fine-tuning阶段中,词向量是固定不变的.在fine-tuning阶段中,我们使用预训练好的模型参数来对新的数据进行训练. ...
- 谷歌丰田联合成果ALBERT了解一下:新轻量版BERT,参数小18倍,性能依旧SOTA
作者 | Less Wright 编译 | ronghuaiyang 来源 | AI公园(ID:AI_Paradise) [导读]这是来自Google和Toyota的新NLP模型,超越Bert,参数小 ...
- db链接相关链接相关参数理解
db链接相关链接相关参数理解 max_connect_errors:tcp/ip链接建立后等待client发送账号,密码等身份验证信息的超时时间的次数 connect_timeout:tcp/ip链接 ...
- [转帖]/proc/sys/net/ipv4/ 下参数理解
/proc/sys/net/ipv4/ 下参数理解,方便服务器优化 2017年06月02日 16:52:27 庞叶蒙 阅读数 3065 https://blog.csdn.net/pangyemeng ...
- BrokenPipeError: [Errno 32] Broken pipe 基于pytorch的训练 num_worker参数理解
BrokenPipeError: [Errno 32] Broken pipe 解决 原因: 在训练过程中,设置的num_workers过大 修改为 num_workers=0 即可. num_wor ...
最新文章
- 2022-2028年中国钢桶行业市场研究及前瞻分析报告
- CentOS6.5-源码编译安装最新MySQL5.7.10
- jQuery是否可以获取与元素关联的所有CSS样式?
- usb管控软件_记账软件新外设:PUPUPULA 智能存钱罐登陆众筹
- XJOJ - 路径数(最短路+最短路路径数量)
- Zookeeper-Zookeeper的配置
- 3.eclipse对mysql云数据库编程增删改查
- 持续集成和持续部署CI/CD简介
- 下列关于java集合说法错误的是_下列关于Spring的说法错误的是( )。
- CIO众论:转型路径和新技术实践
- 高中数学立体几何知识点总结(八大定理)
- ⑦企业级zabbix监控 微信报警、邮箱报警、钉钉报警、全网最细
- 喜马拉雅随车听开通啦
- JavaGUI编程 -- 窗口监听事件和键盘监听事件(AWT)
- 分销系统|分销商城小程序开发方式有什么?
- 帮您解决开发SPI4W常见问题
- Python收取163邮箱--Star.hou
- cad打开卡死_CAD有时候用着用着就卡死了怎么回事?
- 打破思维定势的重要性
- svn文件冲突的解决方法