MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Lengkapi metode __init__ untuk membuat instance MultiHeadAttention, FeedForwardSubLayer, dan dua normalisasi lapisan.
  • Lengkapi metode forward() dengan mengisi mekanisme multi-head attention dan sublayer feed-forward; untuk mekanisme attention, gunakan src_mark yang 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
Edit dan Jalankan Kode