赞
踩
针对上图分别从每个部分进行计算。
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参数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。