BaşlayınÜcretsiz başlayın

Decoder katmanı

Encoder transformer'lar gibi, decoder transformer'lar da çoklu katmanlardan oluşur ve çok başlı dikkat ile ileri beslemeli alt katmanlardan yararlanır. Bu bileşenleri birleştirerek bir DecoderLayer sınıfı oluşturmayı dene.

MultiHeadAttention ve FeedForwardSubLayer sınıfları kullanımına hazır; ayrıca oluşturduğun tgt_mask ile birlikte kullanabilirsin.

Bu egzersiz, kursun bir parçasıdır

PyTorch ile Transformer Modelleri

Kursa Göz Atın

Egzersiz talimatları

__init__ yönteminde tanımlanan katmanlardan girdileri geçirmek için forward() yöntemini tamamla:

  • Sağlanan tgt_mask'i ve girdi gömmelerini (x) sorgu, anahtar ve değer matrisleri olarak kullanarak dikkat hesaplamasını yap.
  • dropout uygula ve ilk katman normalleştirmesini (norm1) gerçekleştir.
  • İleri beslemeli alt katmandan (ff_sublayer) geçir.
  • dropout uygula ve ikinci katman normalleştirmesini (norm2) gerçekleştir.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

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
Kodu Düzenle ve Çalıştır