Avkodarlagret
Precis som kodartransformers är avkodartransformers också uppbyggda av flera lager som använder multi-head attention och feed-forward-dellager. Kombinera nu dessa komponenter för att bygga en DecoderLayer-klass.
Klasserna MultiHeadAttention och FeedForwardSubLayer finns tillgängliga för dig att använda, tillsammans med den tgt_mask du skapade.
Den här övningen är en del av kursen
Transformermodeller med PyTorch
Övningsinstruktioner
Slutför forward()-metoden för att skicka indataembeddingarna genom de lager som definierats i __init__-metoden:
- Utför uppmärksamhetsberäkningen med hjälp av den angivna
tgt_maskoch indataembeddingarna,x, för fråge-, nyckel- och värdematriserna. - Applicera
dropoutoch det första normaliseringslagret,norm1. - Utför passet genom feed-forward-dellagret,
ff_sublayer. - Applicera
dropoutoch det andra normaliseringslagret,norm2.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
class DecoderLayer(nn.Module):
def __init__(self, d_model, num_heads, d_ff, dropout):
super().__init__()
self.self_attn = MultiHeadAttention(d_model, num_heads)
self.ff_sublayer = FeedForwardSubLayer(d_model, d_ff)
self.norm1 = nn.LayerNorm(d_model)
self.norm2 = nn.LayerNorm(d_model)
self.dropout = nn.Dropout(dropout)
def forward(self, x, tgt_mask):
# Perform the attention calculation
attn_output = self.____
# Apply dropout and the first layer normalization
x = self.____(x + self.____(attn_output))
# Pass through the feed-forward sublayer
ff_output = self.____(x)
# Apply dropout and the second layer normalization
x = self.____(x + self.____(ff_output))
return x