ViT-B参数量计算

ViT-B: layers=12,hidden_size=768,MLP_size=3072,heads=12,params=86M,image_size=384+1

参考:https://blog.csdn.net/weixin_43922901/article/details/102602557

1 Patch embedding

ViT-B参数量计算_第1张图片
patch_dim = 16163, dim = hidden_size = 768
所以参数量为768*768

2 Transformer block(attention+FFN)

attention: 这一部分的参数主要来源于x->q,k,v所要进行的linear变换,即 w q w_q wq, w k w_k wk, w v w_v wv三个矩阵,每个矩阵的维度都是 d ∗ d d*d dd,如果是多头的话就是 d ∗ d / h e a d d*d/head dd/head。此处d=768, head=12,故参数量为768* 768/12* 3,一共12个头,所以是7687683

FFN:
ViT-B参数量计算_第2张图片参数量为76830722,一共12层,故为76830722*12

3 Layernorm 的 gamma 和 beta

三处使用:
ViT-B参数量计算_第3张图片上图的prenorm。

ViT-B参数量计算_第4张图片
gamma和beta都是768维,Transformer block共有12个,故总共的layer norm参数量为:7682+7682212

综上,总共的参数量为patching embedding+positional embedding+12*(多头qkv+FFN+layer_norm in attention)+layer_norm in mlp = 768768+768(384/16 +1)+12*(7687684+76830722+76822)+768*2 = 85,582,080 约为 86M(应该再加上最后的mlp,这个视不同的分类任务而定)。

你可能感兴趣的:(CV,cv)