CNNGPT
1.0.0
$ 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
: 語彙のサイズ (一意のトークンの数)。embedding_dim
: 埋め込みの次元。num_layers
: 畳み込み層の数。kernel_size
: 畳み込みカーネルのサイズ。hidden_dim
: 非表示表現の次元 (残りの接続のembedding_dim
と一致する必要があります)。max_seq_len
: モデルが処理できる最大シーケンス長。t
での畳み込みが将来のタイム ステップに依存しないようにします。ネットワーク全体で、一貫性を維持するためにテンソル形状を注意深く管理します。
[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
とhidden_dim
等しい必要があります。LayerNorm
適用する前に、テンソルを[batch_size, seq_len, hidden_dim]
に転置します。max_seq_len
より短いシーケンスを処理できます。位置エンコーディングはそれに応じてスライスされます。 各ステップを慎重に実行し、コードが前に概説した設計原則と一致していることを確認しながら、詳細なアルゴリズムを PyTorch 実装に変換することに成功しました。この CNN ベースの言語モデルは、因果畳み込みと拡張畳み込み、ゲート アクティベーション、残差接続、層正規化を利用して、生成タスク用のテキスト データを効果的にモデル化します。
各コンポーネントとモデル内のその役割を理解することで、このアーキテクチャが言語のローカル依存関係とグローバル依存関係の両方をどのように捉え、自然言語処理における従来のモデルに代わる強力な代替手段を提供するかを理解できます。