小白bert參數計算

在這裏插入圖片描述

針對上圖分別從每個部分進行計算。

  • 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 部分(前向傳播):

WX+bWX+b 有兩層

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

第二層:3072*768+768=2362368

=4722432‬

5 部分(殘差和norm):

768 * 2 = 1536

總共參數:

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

23835648‬+(2359296‬+1536+2362368+1536)= 108,853,248 約等於109M參數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章