12层的bert参数量_小白Bert系列-参数计算

0587ca460e6cf50a1ddcd6978760236a.png

1eb7be298ec1fa1313defc0a00245a47.png

针对上图分别从每个部分进行计算。

  • BERT-Base, Uncased 12层,768个隐单元,12个Attention head,110M参数
  • BERT-Large, Uncased 24层,1024个隐单元,16个head,340M参数
  • BERT-Base, Cased 12层,768个隐单元,12个Attention head,110M参数
  • BERT-Large, Uncased 24层,1024个隐单元,16个head,340M参数。

bert base 12层 768隐藏单元 12个head 共110M

vocab_size=30522, hidden_size=768, max_position_embeddings=512, token_type_embeddings=2

1 部分:

Token Embeddings:总词汇是30522每个输出维度都是768,参数量是30522*768

Position Embeddings:transformer中位置信息是通过sincos生成,但是在bert中是学出来了 (原文中说的应该是的数据量足,能学出来)最大长度是512所以这里参数量是512*768

Segment Embeddings:用1和0表示,所以参数是2*768

所以这个部分就是 (30522+512 + 2)* 768=23835648‬

2 部分(注意力部分):

multi-head因为分成12份

单个head的参数是 768 * 768/12 * 3

12个head就是 768 * 768/12 * 3 * 12

紧接着将多个head进行concat再进行变换,此时W的大小是768 * 768

所以这个部分是768 * 768/12 * 3 * 12 + 768 * 768=2359296‬

3 部分(残差和norm):

norm使用的是layer normalization,每个维度有两个参数

768 * 2 = 1536

4 部分(前向传播):

​ 有两层

第一层:768*3072(原文中4H长度) + 3072=2360064

第二层:3072*768+768=2362368

5 部分(残差和norm):

768 * 2 = 1536

总共参数:

1的部分+(2,3,4,5部分)*12

23835648‬+(2359296‬+1536+2362368+1536)= 108,853,248 约等于109M参数

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值