single
Défi : Structuration des blocs encodeur et décodeur
Glissez pour afficher le menu
Comprendre la structure des blocs encodeurs et blocs décodeurs est essentiel pour maîtriser la façon dont les Transformers traitent et génèrent du texte. Chaque bloc encodeur dans un Transformer est conçu pour transformer des séquences d'entrée en représentations riches en contexte, tandis que chaque bloc décodeur génère des séquences de sortie en tenant compte à la fois des sorties précédentes et des représentations de l'encodeur. Dans les tâches de texte séquence-à-séquence, telles que la traduction ou le résumé, l'encodeur prend le texte d'entrée et l'encode en une série d'états cachés. Le décodeur utilise ensuite ces états cachés, ainsi que son propre mécanisme d'auto-attention, pour générer la séquence cible étape par étape. Cette interaction entre les blocs encodeur et décodeur permet au modèle de capturer des dépendances complexes dans le texte, rendant les Transformers particulièrement efficaces pour un large éventail de tâches de traitement du langage naturel.
Le tableau suivant résume la séquence des opérations dans un bloc encodeur de Transformer et met en évidence leur importance pour les données textuelles :
| |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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. |
Glissez pour commencer à coder
Votre tâche consiste à compléter les parties manquantes de la classe TransformerEncoderBlock en initialisant correctement ses composants clés et en veillant à leur utilisation dans le calcul du passage avant.
La classe TransformerEncoderBlock modélise un bloc encodeur unique dans une architecture Transformer. Vous devez initialiser correctement deux composants principaux dans le constructeur de la classe (méthode __init__) :
- La couche d'auto-attention en utilisant
MultiHeadAttention(hidden_dim). Cette couche permet à chaque jeton de l'entrée de prêter attention à tous les autres jetons, capturant ainsi les relations contextuelles ; - Le réseau de neurones à propagation avant en utilisant
FeedForward(hidden_dim). Cette couche applique des transformations non linéaires à chaque représentation de jeton individuellement, traitant davantage la sortie de la couche d'auto-attention ; - Dans la méthode
forward, vous devez appliquer ces deux couches de manière séquentielle :- d'abord, passer l'entrée
xà travers la couche d'auto-attention ; - ensuite, passer la sortie de la couche d'auto-attention à travers le réseau de neurones à propagation avant ;
- retourner la sortie finale.
- d'abord, passer l'entrée
Assurez-vous d'instancier à la fois MultiHeadAttention et FeedForward avec le paramètre hidden_dim fourni à la classe. Ces composants représentent la structure centrale d'un bloc encodeur et doivent être appliqués dans le bon ordre pour assurer le bon fonctionnement du bloc.
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion