Začněte nyníZačněte zdarma

Vrstva encoderu transformeru

Teď, když máš definovanou třídu FeedForwardSubLayer, máš všechny potřebné stavební bloky pro definici třídy EncoderLayer. Pamatuj, že vrstva encoderu se typicky skládá z mechanismu multi-head attention a feed-forward podvrstvy s normalizací vrstev a dropoutem na vstupech a výstupech podvrstvy.

Třídy, které jsi již definoval/a, jsou dostupné pod stejnými názvy, spolu s torch a torch.nn jako nn.

Toto cvičení je součástí kurzu

Transformer Models with PyTorch

Zobrazit kurz

Pokyny k cvičení

  • Doplň metodu __init__ tak, aby inicializovala MultiHeadAttention, FeedForwardSubLayer a dvě normalizace vrstev.
  • Doplň metodu forward() implementací mechanismu multi-head attention a feed-forward podvrstvy; pro attention mechanismus použij poskytnutý src_mark a vstupní embeddingy x jako matice query, key a value.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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
Upravit a spustit kód