Kom igångKom igång gratis

Encodertransformatorlagret

Nu när klassen FeedForwardSubLayer är definierad har du alla delar som behövs för att definiera en EncoderLayer-klass. Kom ihåg att encoderlagret vanligtvis består av en multi-head-uppmärksamhetsmekanism och ett feed-forward-sublager med lagernormalisering och dropout på sublagerets indata och utdata.

Klasserna du redan har definierat finns tillgängliga med samma namn, tillsammans med torch och torch.nn som nn.

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

Transformermodeller med PyTorch

Visa kurs

Övningsinstruktioner

  • Fyll i metoden __init__ för att instansiera MultiHeadAttention, FeedForwardSubLayer och två lagernormaliseringar.
  • Fyll i metoden forward() med multi-head-uppmärksamhetsmekanismen och feed-forward-sublagret. Använd src_mask och inbäddningarna x som query-, key- och value-matriser för uppmärksamhetsmekanismen.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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
Redigera och kör kod