$ 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
: Die Größe des Vokabulars (Anzahl der eindeutigen Token).embedding_dim
: Die Dimension der Einbettungen.num_layers
: Die Anzahl der Faltungsschichten.kernel_size
: Die Größe der Faltungskerne.hidden_dim
: Die Dimension der versteckten Darstellungen (sollte mit embedding_dim
für Restverbindungen übereinstimmen).max_seq_len
: Die maximale Sequenzlänge, die das Modell verarbeiten kann.t
nicht von zukünftigen Zeitschritten abhängt.Im gesamten Netzwerk verwalten wir Tensorformen sorgfältig, um die Konsistenz zu gewährleisten:
[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
und hidden_dim
müssen gleich sein, um die Restverbindung korrekt hinzuzufügen.[batch_size, seq_len, hidden_dim]
bevor wir LayerNorm
anwenden.max_seq_len
sind. Positionskodierungen werden entsprechend aufgeteilt. Wir haben den detaillierten Algorithmus erfolgreich in eine PyTorch-Implementierung übersetzt, wobei wir jeden Schritt sorgfältig verfolgt und sichergestellt haben, dass der Code mit den zuvor beschriebenen Designprinzipien übereinstimmt. Dieses CNN-basierte Sprachmodell nutzt kausale und erweiterte Faltungen, Gated-Aktivierungen, Restverbindungen und Ebenennormalisierung, um Textdaten für Generierungsaufgaben effektiv zu modellieren.
Wenn wir jede Komponente und ihre Rolle im Modell verstehen, können wir erkennen, wie diese Architektur sowohl lokale als auch globale Abhängigkeiten in der Sprache erfasst und eine leistungsstarke Alternative zu herkömmlichen Modellen in der Verarbeitung natürlicher Sprache bietet.