Memulai MultiHeadAttentionClass
Setelah Anda mendefinisikan kelas untuk membuat token embedding dan positional embedding, sekarang saatnya mendefinisikan kelas untuk melakukan multi-head attention. Untuk memulai, siapkan parameter yang digunakan untuk perhitungan attention serta layer linear yang digunakan untuk mentransformasikan embedding masukan menjadi matriks query, key, dan value, serta satu layer untuk memproyeksikan kembali bobot attention yang digabungkan ke dalam embedding.
torch.nn telah diimpor sebagai nn.
Latihan ini adalah bagian dari kursus
Model Transformer dengan PyTorch
Petunjuk latihan
- Hitung dimensi embedding yang akan diproses oleh tiap kepala attention,
head_dim. - Definisikan tiga layer masukan (untuk query, key, dan value) serta satu layer keluaran; hilangkan parameter bias dari layer masukan.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
class MultiHeadAttention(nn.Module):
def __init__(self, d_model, num_heads):
super().__init__()
# Calculate the dimensions each head will process
self.num_heads = num_heads
self.d_model = d_model
self.head_dim = ____
# Define the three input layers and one output layer
self.query_linear = nn.Linear(____, ____, bias=False)
self.key_linear = nn.Linear(____)
self.value_linear = ____
self.output_linear = ____