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 的语言模型利用因果卷积和扩张卷积、门控激活、残差连接和层归一化来有效地为生成任务的文本数据建模。
通过了解每个组件及其在模型中的作用,我们可以了解该架构如何捕获语言中的本地和全局依赖性,从而为自然语言处理中的传统模型提供强大的替代方案。