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

Vrstva dekodéru

Stejně jako enkodérové transformery se i dekodérové transformery skládají z více vrstev využívajících multi-head attention a feed-forward podvrstvy. Zkus tyto komponenty propojit a sestavit třídu DecoderLayer.

Třídy MultiHeadAttention a FeedForwardSubLayer jsou k dispozici, stejně jako dříve vytvořená maska tgt_mask.

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

Transformer Models with PyTorch

Zobrazit kurz

Pokyny k cvičení

Dokonči metodu forward() tak, aby vstupní embeddingy prošly vrstvami definovanými v metodě __init__:

  • Proveď výpočet attention pomocí zadané masky tgt_mask a vstupních embeddingů x pro matice query, key a value.
  • Aplikuj dropout a první normalizaci vrstvy, norm1.
  • Proveď průchod přes feed-forward podvrstvu, ff_sublayer.
  • Aplikuj dropout a druhou normalizaci vrstvy, norm2.

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