$ pip3 install -U cnngpt
import torch
from cnngpt . main import CNNLanguageModel
# Hyperparameters
vocab_size = 5000
embedding_dim = 256
num_layers = 4
kernel_size = 3
hidden_dim = 256
max_seq_len = 100
# Initialize model
model = CNNLanguageModel (
vocab_size ,
embedding_dim ,
num_layers ,
kernel_size ,
hidden_dim ,
max_seq_len ,
)
# Dummy input (batch_size=32, sequence_length=50)
x = torch . randint (
0 , vocab_size , ( 32 , 50 )
) # Random integers as token IDs
# Forward pass
logits = model ( x ) # [batch_size, seq_len, vocab_size]
# Output shape
print ( "Logits shape:" , logits . shape )
vocab_size
: La taille du vocabulaire (nombre de jetons uniques).embedding_dim
: La dimension des intégrations.num_layers
: Le nombre de couches convolutives.kernel_size
: La taille des noyaux convolutifs.hidden_dim
: La dimension des représentations cachées (doit correspondre à embedding_dim
pour les connexions résiduelles).max_seq_len
: La longueur de séquence maximale que le modèle peut gérer.t
ne dépend pas des pas de temps futurs.Dans tout le réseau, nous gérons soigneusement les formes tensorielles pour maintenir la cohérence :
[batch_size, seq_len, embedding_dim]
[batch_size, embedding_dim, seq_len]
[batch_size, hidden_dim, seq_len]
[batch_size, seq_len, embedding_dim]
[batch_size, seq_len, vocab_size]
embedding_dim
et hidden_dim
doivent être égaux pour ajouter correctement la connexion résiduelle.[batch_size, seq_len, hidden_dim]
avant d'appliquer LayerNorm
.max_seq_len
; les codages de position sont découpés en conséquence. Nous avons traduit avec succès l'algorithme détaillé dans une implémentation PyTorch, en suivant attentivement chaque étape et en veillant à ce que le code soit conforme aux principes de conception décrits précédemment. Ce modèle de langage basé sur CNN exploite les convolutions causales et dilatées, les activations fermées, les connexions résiduelles et la normalisation des couches pour modéliser efficacement les données textuelles pour les tâches de génération.
En comprenant chaque composant et son rôle dans le modèle, nous pouvons apprécier comment cette architecture capture les dépendances locales et globales du langage, offrant une alternative puissante aux modèles traditionnels de traitement du langage naturel.