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 的語言模型利用因果卷積和擴張卷積、門控激活、殘差連接和層歸一化來有效地為生成任務的文本數據建模。
透過了解每個元件及其在模型中的作用,我們可以了解該架構如何捕捉語言中的本地和全局依賴性,從而為自然語言處理中的傳統模型提供強大的替代方案。