single
Challenge: Strukturierung von Encoder- und Decoder-Blöcken
Swipe um das Menü anzuzeigen
Das Verständnis der Struktur von Encoder- und Decoder-Blöcken ist entscheidend, um zu beherrschen, wie Transformer Texte verarbeiten und generieren. Jeder Encoder-Block in einem Transformer ist darauf ausgelegt, Eingabesequenzen in kontextreiche Repräsentationen umzuwandeln, während jeder Decoder-Block Ausgabesequenzen erzeugt, indem er sowohl auf vorherige Ausgaben als auch auf die Repräsentationen des Encoders achtet. Bei Sequenz-zu-Sequenz-Textaufgaben wie Übersetzung oder Zusammenfassung nimmt der Encoder den Eingabetext auf und kodiert ihn in eine Reihe von versteckten Zuständen. Der Decoder nutzt diese versteckten Zustände zusammen mit seiner eigenen Selbstaufmerksamkeit, um die Zielsequenz Schritt für Schritt zu generieren. Diese Interaktion zwischen Encoder- und Decoder-Blöcken ermöglicht es dem Modell, komplexe Abhängigkeiten im Text zu erfassen, was Transformer für eine Vielzahl von Aufgaben der natürlichen Sprachverarbeitung äußerst effektiv macht.
Die folgende Tabelle fasst die Abfolge der Operationen in einem Transformer-Encoder-Block zusammen und hebt deren Bedeutung für Textdaten hervor:
| |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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. |
Wischen, um mit dem Codieren zu beginnen
Ihre Aufgabe besteht darin, die fehlenden Teile der Klasse TransformerEncoderBlock zu vervollständigen, indem Sie deren zentrale Komponenten korrekt initialisieren und sicherstellen, dass sie in der Vorwärtsberechnung verwendet werden.
Die Klasse TransformerEncoderBlock modelliert einen einzelnen Encoder-Block in einer Transformer-Architektur. Sie müssen zwei Hauptkomponenten im Konstruktor der Klasse (__init__-Methode) ordnungsgemäß initialisieren:
- Die Self-Attention-Schicht mit
MultiHeadAttention(hidden_dim). Diese Schicht ermöglicht es jedem Token im Input, auf alle anderen Tokens zu achten und kontextuelle Beziehungen zu erfassen; - Das Feed-Forward-Netzwerk mit
FeedForward(hidden_dim). Diese Schicht wendet nichtlineare Transformationen auf jede Token-Repräsentation einzeln an und verarbeitet so die Ausgabe der Self-Attention-Schicht weiter; - In der
forward-Methode sollten Sie diese beiden Schichten nacheinander anwenden:- Zuerst geben Sie den Input
xdurch die Self-Attention-Schicht; - Anschließend geben Sie die Ausgabe der Self-Attention-Schicht durch das Feed-Forward-Netzwerk;
- Geben Sie die finale Ausgabe zurück.
- Zuerst geben Sie den Input
Stellen Sie sicher, dass sowohl MultiHeadAttention als auch FeedForward mit dem an die Klasse übergebenen Parameter hidden_dim instanziiert werden. Diese Komponenten bilden die Kernstruktur eines Encoder-Blocks und müssen in der richtigen Reihenfolge angewendet werden, damit der Block ordnungsgemäß funktioniert.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen