Kom igångKom igång gratis

Lägga till korsattention i avkodarlagret

För att integrera de enkodar- och avkodarblock du definierat tidigare i en enkodar-avkodar-transformer behöver du skapa en korsattentionsmekanism som fungerar som brygga mellan de två.

Klassen MultiHeadAttention som du definierade tidigare är fortfarande tillgänglig.

Den här övningen är en del av kursen

Transformermodeller med PyTorch

Visa kurs

Övningsinstruktioner

  • Definiera en korsattentionsmekanism (med MultiHeadAttention) och ett tredje lagernormaliseringssteg (med nn.LayerNorm) i metoden __init__.
  • Slutför det framåtriktade passet för att lägga till korsattention i avkodarlagret.

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)
        # Define cross-attention and a third layer normalization
        self.cross_attn = ____
        self.ff_sublayer = FeedForwardSubLayer(d_model, d_ff)
        self.norm1 = nn.LayerNorm(d_model)
        self.norm2 = nn.LayerNorm(d_model)
        self.norm3 = ____
        self.dropout = nn.Dropout(dropout)

    def forward(self, x, y, tgt_mask, cross_mask):
        self_attn_output = self.self_attn(x, x, x, tgt_mask)
        x = self.norm1(x + self.dropout(self_attn_output))
        # Complete the forward pass
        cross_attn_output = self.____(____)
        x = self.norm2(x + self.dropout(____))
        ff_output = self.ff_sublayer(x)
        x = self.norm3(x + self.dropout(ff_output))
        return x
Redigera och kör kod