Architecture, statistiques des paramètres et analyse de la valeur de retour de BertModel dans les transformateurs

 Architecture de BertModel :

Prenons l'exemple de bert-base-chinese :

model = BertModel.from_pretrained("../model/bert-base-chinese")

Paramètres du modèle statistique :

# 参数量的统计
total_params = 0 # 模型总的参数量
total_learnable_params = 0 # 可学习的参数量
total_embedding_params = 0 # embeddings 层的参数量
total_encoder_params = 0 # Encoder编码器部分的参数量
total_pooler_params = 0

for name , param  in model.named_parameters():
    print(name , "->" , param.shape)
    if param.requires_grad:
        total_learnable_params += param.numel()
    if "embedding" in name :
        total_embedding_params += param.numel()
    if "encoder" in name :
        total_encoder_params += param.numel()
    if "pooler" in name :
        total_pooler_params += param.numel()
        
    total_params += param.numel()

De ce qui précède, on peut voir que :

La proportion de la couche d'enrobage est de 0,16254008305735163

La partie codeur de l'encodeur représentait 0,8316849528014959

La couche Pooler représentait 0,005774964141152439

Paramètres totaux : 102267648

Analyse de la valeur de retour :

La documentation sur BertModel est la suivante :

BERT Nous sommes en train de faire progresser et de démocratiser l'intelligence artificielle grâce à l'open source et à la science ouverte. icon-default.png?t=N6B9https://huggingface.co/docs/transformers/main/en/model_doc/bert#transformers.BertModel explique en détail les progrès ici :

 last_hidden_state et pooler_output doivent être renvoyés, et hidden_state est renvoyé lorsque le modèle est défini output_hidden_states=True ou config.output_hidden_states=True .

 Laissez-moi vous expliquer ici :

La longueur des sorties est de 3 :

# sorties[0] == last_hidden_state : (batch_size, sequence_length, hidden_size)

# outputs[1] == pooler_output : (batch_size, hidden_size)

# sorties[2] == état_caché : (taille_batch, longueur_séquence, taille_cachée)

 Comme on peut le voir sur la figure ci-dessus :

model.embeddings(input_tensor) == sorties[2][0]

Je suppose que tu aimes

Origine blog.csdn.net/wtl1992/article/details/132048038
conseillé
Classement