Lapisan decoder
Seperti encoder transformer, decoder transformer juga terdiri dari beberapa lapisan yang memanfaatkan multi-head attention dan sublayer feed-forward. Cobalah gabungkan komponen-komponen ini untuk membangun kelas DecoderLayer.
Kelas MultiHeadAttention dan FeedForwardSubLayer tersedia untuk Anda gunakan, bersama dengan tgt_mask yang telah Anda buat.
Latihan ini adalah bagian dari kursus
Model Transformer dengan PyTorch
Petunjuk latihan
Lengkapi metode forward() untuk meneruskan embedding masukan melalui lapisan-lapisan yang didefinisikan dalam metode __init__:
- Lakukan perhitungan attention menggunakan
tgt_maskyang disediakan dan embedding masukanxuntuk matriks query, key, dan value. - Terapkan
dropoutdan normalisasi lapisan pertama,norm1. - Lakukan penerusan melalui sublayer feed-forward,
ff_sublayer. - Terapkan
dropoutdan normalisasi lapisan kedua,norm2.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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