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
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. dropoutuygula ve ilk katman normalleştirmesini (norm1) gerçekleştir.- İleri beslemeli alt katmandan (
ff_sublayer) geçir. dropoutuygula 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