single
Utmaning: Strukturering av encoder- och decoderblock
Svep för att visa menyn
Att förstå strukturen hos encoder- och decoderblock är avgörande för att bemästra hur Transformers bearbetar och genererar text. Varje encoderblock i en Transformer är utformat för att omvandla inmatningssekvenser till kontextuellt rika representationer, medan varje decoderblock genererar utmatningssekvenser genom att uppmärksamma både tidigare utmatningar och encoderns representationer. Vid sekvens-till-sekvens-textuppgifter, såsom översättning eller sammanfattning, tar encodern inmatningstexten och kodar den till en serie dolda tillstånd. Decodern använder sedan dessa dolda tillstånd, tillsammans med sin egen självuppmärksamhet, för att stegvis generera målsekvensen. Denna interaktion mellan encoder- och decoderblock gör det möjligt för modellen att fånga komplexa beroenden i text, vilket gör Transformers mycket effektiva för en mängd olika uppgifter inom naturlig språkbehandling.
Följande tabell sammanfattar sekvensen av operationer i ett Transformer-encoderblock och belyser deras betydelse för textdata:
| |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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. |
Svep för att börja koda
Din uppgift är att komplettera de saknade delarna av klassen TransformerEncoderBlock genom att korrekt initiera dess nyckelkomponenter och säkerställa att de används i den framåtriktade beräkningen.
Klassen TransformerEncoderBlock modellerar ett enskilt encoderblock i en Transformer-arkitektur. Du behöver korrekt initiera två huvudkomponenter i klassens konstruktor (__init__-metoden):
- Self-attention-lagret med
MultiHeadAttention(hidden_dim). Detta lager gör det möjligt för varje token i indata att uppmärksamma alla andra tokens, vilket fångar kontextuella relationer; - Feed-forward-nätverket med
FeedForward(hidden_dim). Detta lager applicerar icke-linjära transformationer på varje tokenrepresentation individuellt och bearbetar vidare utdata från self-attention-lagret; - I
forward-metoden ska du applicera dessa två lager sekventiellt:- först, skicka indata
xgenom self-attention-lagret; - därefter, skicka utdata från self-attention-lagret genom feed-forward-nätverket;
- returnera slututdata.
- först, skicka indata
Se till att både MultiHeadAttention och FeedForward instansieras med parametern hidden_dim som ges till klassen. Dessa komponenter utgör kärnstrukturen i ett encoderblock och måste appliceras i rätt ordning för att blocket ska fungera korrekt.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal