$ 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
: el tamaño del vocabulario (número de tokens únicos).embedding_dim
: la dimensión de las incrustaciones.num_layers
: el número de capas convolucionales.kernel_size
: el tamaño de los núcleos convolucionales.hidden_dim
: La dimensión de las representaciones ocultas (debe coincidir con embedding_dim
para conexiones residuales).max_seq_len
: la longitud máxima de secuencia que el modelo puede manejar.t
no dependa de pasos de tiempo futuros.En toda la red, gestionamos cuidadosamente las formas tensoriales para mantener la coherencia:
[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
y hidden_dim
deben ser iguales para agregar correctamente la conexión residual.[batch_size, seq_len, hidden_dim]
antes de aplicar LayerNorm
.max_seq_len
; las codificaciones posicionales se dividen en consecuencia. Hemos traducido con éxito el algoritmo detallado a una implementación de PyTorch, siguiendo cuidadosamente cada paso y asegurándonos de que el código se alinee con los principios de diseño descritos anteriormente. Este modelo de lenguaje basado en CNN aprovecha convoluciones causales y dilatadas, activaciones cerradas, conexiones residuales y normalización de capas para modelar eficazmente datos textuales para tareas de generación.
Al comprender cada componente y su papel en el modelo, podemos apreciar cómo esta arquitectura captura dependencias locales y globales en el lenguaje, ofreciendo una poderosa alternativa a los modelos tradicionales en el procesamiento del lenguaje natural.