BaşlayınÜcretsiz Başlayın

MultiHeadAttention sınıfına yöntemler ekleme

Bu egzersizde, sıfırdan dört yöntem tanımlayarak MultiHeadAttention sınıfının kalanını oluşturacaksın:

  • .split_heads(): dikkat başlıkları arasında giriş gömmelerini (embeddings) böl ve dönüştür
  • .compute_attention(): ölçeklendirilmiş nokta çarpımı dikkat ağırlıklarını hesapla ve değer (value) matrisiyle çarp
  • .combine_heads(): dikkat ağırlıklarını, giriş gömmeleri x ile aynı şekle geri dönüştür
  • .forward(): giriş gömmelerini her adımdan geçirmek için diğer yöntemleri çağır

torch.nn nn olarak içe aktarıldı, torch.nn.functional F olarak mevcut ve torch da kullanılabilir.

Bu egzersiz

PyTorch ile Transformer Modelleri

kursunun bir parçasıdır
Kursu Görüntüle

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

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)
Kodu Düzenle ve Çalıştır