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 ASegment B。在下载的bert_config.json或ernie_config.json文件里也有说明,默认值应该为2。

参考链接:参考链接

ernie和Bert的参数理解相关推荐

  1. 基于TensorRT的BERT实时自然语言理解(下)

    基于TensorRT的BERT实时自然语言理解(下) BERT Inference with TensorRT 请参阅Python脚本bert_inference.py还有详细的Jupyter not ...

  2. 基于TensorRT的BERT实时自然语言理解(上)

    基于TensorRT的BERT实时自然语言理解(上) 大规模语言模型(LSLMs)如BERT.GPT-2和XL-Net为许多自然语言理解(NLU)任务带来了最先进的精准飞跃.自2018年10月发布以来 ...

  3. 我跑了ERNIE和BERT两个模型,结果出乎意料......

    BERT和ERNIE,NLP领域近来最受关注的2大模型究竟怎么样? 刚刚有人实测比拼了一下,结果在中文语言环境下,结果令人意外又惊喜. 具体详情究竟如何?不妨一起围观下这篇技术评测. 写在前面 随着2 ...

  4. 《预训练周刊》第30期:谷歌首次展示新版语言模型BERT,参数达4810亿个

    关于周刊 本期周刊,我们选择了9篇预训练相关的论文,涉及文本更正.模型适配.实体标记.视频理解.三维建模.行人识别.医学实体识别.分子分布和目标检测的探索.此外,在研究动态方面,我们选择了1篇预训练资 ...

  5. BERT 词向量理解及训练更新

    1.BERT 词向量理解 在预训练阶段中,词向量是在不断更新的,而在fine-tuning阶段中,词向量是固定不变的.在fine-tuning阶段中,我们使用预训练好的模型参数来对新的数据进行训练. ...

  6. 谷歌丰田联合成果ALBERT了解一下:新轻量版BERT,参数小18倍,性能依旧SOTA

    作者 | Less Wright 编译 | ronghuaiyang 来源 | AI公园(ID:AI_Paradise) [导读]这是来自Google和Toyota的新NLP模型,超越Bert,参数小 ...

  7. db链接相关链接相关参数理解

    db链接相关链接相关参数理解 max_connect_errors:tcp/ip链接建立后等待client发送账号,密码等身份验证信息的超时时间的次数 connect_timeout:tcp/ip链接 ...

  8. [转帖]/proc/sys/net/ipv4/ 下参数理解

    /proc/sys/net/ipv4/ 下参数理解,方便服务器优化 2017年06月02日 16:52:27 庞叶蒙 阅读数 3065 https://blog.csdn.net/pangyemeng ...

  9. BrokenPipeError: [Errno 32] Broken pipe 基于pytorch的训练 num_worker参数理解

    BrokenPipeError: [Errno 32] Broken pipe 解决 原因: 在训练过程中,设置的num_workers过大 修改为 num_workers=0 即可. num_wor ...

最新文章

  1. 2022-2028年中国钢桶行业市场研究及前瞻分析报告
  2. CentOS6.5-源码编译安装最新MySQL5.7.10
  3. jQuery是否可以获取与元素关联的所有CSS样式?
  4. usb管控软件_记账软件新外设:PUPUPULA 智能存钱罐登陆众筹
  5. XJOJ - 路径数(最短路+最短路路径数量)
  6. Zookeeper-Zookeeper的配置
  7. 3.eclipse对mysql云数据库编程增删改查
  8. 持续集成和持续部署CI/CD简介
  9. 下列关于java集合说法错误的是_下列关于Spring的说法错误的是( )。
  10. CIO众论:转型路径和新技术实践
  11. 高中数学立体几何知识点总结(八大定理)
  12. ⑦企业级zabbix监控 微信报警、邮箱报警、钉钉报警、全网最细
  13. 喜马拉雅随车听开通啦
  14. JavaGUI编程 -- 窗口监听事件和键盘监听事件(AWT)
  15. 分销系统|分销商城小程序开发方式有什么?
  16. 帮您解决开发SPI4W常见问题
  17. Python收取163邮箱--Star.hou
  18. cad打开卡死_CAD有时候用着用着就卡死了怎么回事?
  19. 打破思维定势的重要性
  20. svn文件冲突的解决方法

热门文章

  1. Linux命令 ls -l s输出内容含义详解
  2. mac Zip 常用命令
  3. 使用data attributes
  4. gsm短信猫长短信pdu数据包分析[转]
  5. 2017 部门文化宣贯会议内容
  6. Java菜鸟基础(一)
  7. 【仿某公司前台】 asp安全查询系统
  8. 如何为复杂页面实现过渡页面
  9. c java socket编程_java+swing C/s模式的socket编程与长短连接
  10. 第二个案例实操——创建Bean类