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

Dikkat mekanizmalı bir RNN modeli oluşturma

PyBooks'ta ekip çeşitli derin öğrenme mimarilerini inceliyor. Biraz araştırmadan sonra, bir cümledeki bir sonraki kelimeyi tahmin etmek için Dikkat (Attention) mekanizmasına sahip bir RNN uygulamaya karar veriyorsun. Sana, cümlelerden oluşturulmuş bir sözlükle birlikte cümleler içeren bir veri kümesi verildi.

Aşağıdaki paketler senin için içe aktarıldı: torch, nn.

Aşağıdakiler önceden yüklendi:

  • vocab ve vocab_size: Sözlük kümesi ve boyutu
  • word_to_ix ve ix_to_word: kelimeden indekse ve indeksten kelimeye eşleştirmeler için sözlük
  • input_data ve target_data: veri kümesinin girdi-çıktı çiftlerine dönüştürülmüş hâli
  • embedding_dim ve hidden_dim: gömme ve RNN gizil durum boyutları

Örnek cümleleri görmek için konsolda data değişkenini inceleyebilirsin.

Bu egzersiz

PyTorch ile Metin için Deep Learning

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

Egzersiz talimatları

  • Verilen embedding_dim ile sözlük için bir gömme (embedding) katmanı oluştur.
  • Dikkat skorlarını elde etmek için RNN dizi çıktısına doğrusal bir dönüşüm uygula.
  • Skorlardan dikkat ağırlıklarını elde et.
  • Bağlam vektörünü, RNN çıktıları ile dikkat ağırlıklarının ağırlıklı toplamı olarak hesapla.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

class RNNWithAttentionModel(nn.Module):
    def __init__(self):
        super(RNNWithAttentionModel, self).__init__()
        # Create an embedding layer for the vocabulary
        self.embeddings = nn.____(vocab_size, embedding_dim)
        self.rnn = nn.RNN(embedding_dim, hidden_dim, batch_first=True)
        # Apply a linear transformation to get the attention scores
        self.attention = nn.____(____, 1)
        self.fc = nn.____(hidden_dim, vocab_size)
    def forward(self, x):
        x = self.embeddings(x)
        out, _ = self.rnn(x)
        #  Get the attention weights
        attn_weights = torch.nn.functional.____(self.____(out).____(2), dim=1)
        # Compute the context vector 
        context = torch.sum(____.____(2) * out, dim=1)
        out = self.fc(context)
        return out
      
attention_model = RNNWithAttentionModel()
optimizer = torch.optim.Adam(attention_model.parameters(), lr=0.01)
criterion = nn.CrossEntropyLoss()
print("Model Instantiated")
Kodu Düzenle ve Çalıştır