MultiHeadAttentionClass'e Başlama
Artık belirteç gömmeleri ve konumsal gömmeler oluşturmak için sınıfları tanımladığına göre, sıra çok başlı attention için bir sınıf tanımlamaya geldi. Başlamak için, attention hesaplamasında kullanılacak parametreleri ve girdi gömmelerini sorgu (query), anahtar (key) ve değer (value) matrislerine dönüştüren doğrusal katmanları, ayrıca birleştirilmiş attention ağırlıklarını yeniden gömmelere yansıtacak bir katmanı ayarla.
torch.nn, nn olarak içe aktarılmış durumda.
Bu egzersiz, kursun bir parçasıdır
PyTorch ile Transformer Modelleri
Egzersiz talimatları
- Her bir attention başının işleyeceği gömme boyutunu (
head_dim) hesapla. - Üç girdi katmanını (query, key ve value için) ve bir çıktı katmanını tanımla; girdi katmanlarından bias parametresini kaldır.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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 = ____