MulaiMulai sekarang secara gratis

Menambahkan metode ke kelas MultiHeadAttention

Dalam latihan ini, Anda akan membangun sisa kelas MultiHeadAttention dari awal dengan mendefinisikan empat metode:

  • .split_heads(): membagi dan mentransformasikan embedding masukan di antara head attention
  • .compute_attention(): menghitung bobot scaled dot-product attention yang dikalikan dengan matriks values
  • .combine_heads(): mentransformasikan kembali bobot attention ke bentuk yang sama seperti embedding masukan, x
  • .forward(): memanggil metode lainnya untuk meneruskan embedding masukan melalui setiap proses

torch.nn telah diimpor sebagai nn, torch.nn.functional tersedia sebagai F, dan torch juga tersedia.

Latihan ini adalah bagian dari kursus

Model Transformer dengan PyTorch

Lihat Kursus

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

class MultiHeadAttention(nn.Module):
    def __init__(self, d_model, num_heads):
        super().__init__()
        self.num_heads = num_heads
        self.d_model = d_model
        self.head_dim = d_model // num_heads
        self.query_linear = nn.Linear(d_model, d_model, bias=False)
        self.key_linear = nn.Linear(d_model, d_model, bias=False)
        self.value_linear = nn.Linear(d_model, d_model, bias=False)
        self.output_linear = nn.Linear(d_model, d_model)

    def split_heads(self, x, batch_size):
        seq_length = x.size(1)
        # Split the input embeddings and permute
        x = x.____
        return x.permute(0, 2, 1, 3)
Edit dan Jalankan Kode