$ 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
: O tamanho do vocabulário (número de tokens exclusivos).embedding_dim
: A dimensão dos embeddings.num_layers
: o número de camadas convolucionais.kernel_size
: O tamanho dos kernels convolucionais.hidden_dim
: A dimensão das representações ocultas (deve corresponder embedding_dim
para conexões residuais).max_seq_len
: O comprimento máximo da sequência que o modelo pode manipular.t
não dependa de etapas de tempo futuras.Em toda a rede, gerenciamos cuidadosamente as formas dos tensores para manter a consistência:
[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
e hidden_dim
devem ser iguais para adicionar corretamente a conexão residual.[batch_size, seq_len, hidden_dim]
antes de aplicar LayerNorm
.max_seq_len
; codificações posicionais são divididas de acordo. Traduzimos com sucesso o algoritmo detalhado em uma implementação PyTorch, seguindo cuidadosamente cada etapa e garantindo que o código esteja alinhado com os princípios de design descritos anteriormente. Este modelo de linguagem baseado em CNN aproveita convoluções causais e dilatadas, ativações fechadas, conexões residuais e normalização de camada para modelar efetivamente dados textuais para tarefas de geração.
Ao compreender cada componente e seu papel no modelo, podemos apreciar como esta arquitetura captura dependências locais e globais na linguagem, oferecendo uma alternativa poderosa aos modelos tradicionais no processamento de linguagem natural.