ÎncepețiÎncepe gratuit

Stratul decoder

Ca și transformerele encoder, transformerele decoder sunt construite din mai multe straturi care folosesc mecanisme de atenție multi-cap și sub-straturi feed-forward. Încearcă să combini aceste componente pentru a construi clasa DecoderLayer.

Clasele MultiHeadAttention și FeedForwardSubLayer sunt disponibile pentru a fi utilizate, alături de tgt_mask creat anterior.

Acest exercițiu face parte din cursul

Modele Transformer cu PyTorch

Vezi cursul

Instrucțiuni pentru exercițiu

Completează metoda forward() pentru a trece încorporările de intrare prin straturile definite în metoda __init__:

  • Realizează calculul de atenție folosind tgt_mask furnizat și încorporările de intrare, x, pentru matricele de interogare, cheie și valoare.
  • Aplică dropout și primul strat de normalizare, norm1.
  • Realizează trecerea prin sub-stratul feed-forward, ff_sublayer.
  • Aplică dropout și al doilea strat de normalizare, norm2.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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
Editează și rulează codul