Lapisan transformer encoder
Dengan kelas FeedForwardSubLayer yang sudah didefinisikan, Anda memiliki semua komponen yang diperlukan untuk mendefinisikan kelas EncoderLayer. Ingat bahwa lapisan encoder umumnya terdiri atas mekanisme multi-head attention dan sublayer feed-forward dengan normalisasi lapisan serta dropout pada masukan dan keluaran sublayer.
Kelas-kelas yang sudah Anda definisikan tersedia dengan nama yang sama, bersama dengan torch dan torch.nn sebagai nn.
Latihan ini adalah bagian dari kursus
Model Transformer dengan PyTorch
Petunjuk latihan
- Lengkapi metode
__init__untuk membuat instanceMultiHeadAttention,FeedForwardSubLayer, dan dua normalisasi lapisan. - Lengkapi metode
forward()dengan mengisi mekanisme multi-head attention dan sublayer feed-forward; untuk mekanisme attention, gunakansrc_markyang disediakan dan embedding masukan,x, untuk matriks query, key, dan value.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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