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
PyTorch ile Transformer Modelleri
kursunun bir parçasıdırEgzersiz 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ı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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