single
Desafío: Estructuración de Bloques de Codificador y Decodificador
Desliza para mostrar el menú
Comprender la estructura de los bloques codificadores y bloques decodificadores es fundamental para dominar cómo los Transformers procesan y generan texto. Cada bloque codificador en un Transformer está diseñado para transformar secuencias de entrada en representaciones ricas en contexto, mientras que cada bloque decodificador genera secuencias de salida atendiendo tanto a las salidas previas como a las representaciones del codificador. En tareas de texto de secuencia a secuencia, como traducción o resumen, el codificador toma el texto de entrada y lo codifica en una serie de estados ocultos. El decodificador utiliza estos estados ocultos, junto con su propia autoatención, para generar la secuencia objetivo paso a paso. Esta interacción entre los bloques codificador y decodificador permite que el modelo capture dependencias complejas en el texto, haciendo que los Transformers sean altamente efectivos para una amplia gama de tareas de procesamiento de lenguaje natural.
La siguiente tabla resume la secuencia de operaciones en un bloque codificador de Transformer y destaca su importancia para los datos de texto:
| |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Each operation ensures that the encoder builds increasingly abstract and context-aware representations of the input text, which are essential for downstream sequence-to-sequence tasks. |
Desliza para comenzar a programar
Tu tarea es completar las partes faltantes de la clase TransformerEncoderBlock inicializando correctamente sus componentes clave y asegurando su uso en el cálculo hacia adelante.
La clase TransformerEncoderBlock modela un solo bloque codificador en una arquitectura Transformer. Debes inicializar adecuadamente dos componentes principales en el constructor de la clase (método __init__):
- La capa de auto-atención usando
MultiHeadAttention(hidden_dim). Esta capa permite que cada token en la entrada atienda a todos los demás tokens, capturando relaciones contextuales; - La red feed-forward usando
FeedForward(hidden_dim). Esta capa aplica transformaciones no lineales a cada representación de token de manera individual, procesando aún más la salida de la capa de auto-atención; - En el método
forward, debes aplicar estas dos capas de forma secuencial:- primero, pasa la entrada
xpor la capa de auto-atención; - luego, pasa la salida de la capa de auto-atención por la red feed-forward;
- devuelve la salida final.
- primero, pasa la entrada
Asegúrate de instanciar tanto MultiHeadAttention como FeedForward con el parámetro hidden_dim proporcionado a la clase. Estos componentes representan la estructura central de un bloque codificador y deben aplicarse en el orden correcto para que el bloque funcione adecuadamente.
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla