ÎncepețiÎncepe gratuit

Stratul encoder al transformerului

Acum că ai definit clasa FeedForwardSubLayer, ai toate componentele necesare pentru a defini clasa EncoderLayer. Reamintește-ți că stratul encoder conține în mod obișnuit un mecanism de atenție multi-cap și un substrat feed-forward, cu normalizare de strat și dropout aplicate pe intrările și ieșirile substratului.

Clasele pe care le-ai definit anterior sunt disponibile cu aceleași nume, împreună cu torch și torch.nn ca nn.

Acest exercițiu face parte din cursul

Modele Transformer cu PyTorch

Vezi cursul

Instrucțiuni pentru exercițiu

  • Completează metoda __init__ pentru a instanția MultiHeadAttention, FeedForwardSubLayer și două normalizări de strat.
  • Completează metoda forward() adăugând mecanismul de atenție multi-cap și substratul feed-forward; pentru mecanismul de atenție, folosește src_mark-ul furnizat și încorporările de intrare, x, pentru matricele query, key și value.

Exercițiu interactiv practic

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

class EncoderLayer(nn.Module):
    def __init__(self, d_model, num_heads, d_ff, dropout):
        super().__init__()
        # Instantiate the layers
        self.self_attn = ____(d_model, num_heads)
        self.ff_sublayer = ____(d_model, d_ff)
        self.norm1 = ____
        self.norm2 = ____
        self.dropout = nn.Dropout(dropout)

    def forward(self, x, src_mask):
        # Complete the forward method
        attn_output = self.____
        x = self.norm1(x + self.dropout(attn_output))
        ff_output = self.____
        x = self.norm2(x + self.dropout(ff_output))
        return x
Editează și rulează codul