CodeBlanks Logo Icon CodeBlanks

Özet - RNN

Bu grupta RNN, hidden state ve vanishing gradient'i öğrendin.

Özet: RNN

Bu grupta:

  • RNN diziyi adım adım işler: h_t = tanh(W_x x_t + W_h h_(t-1) + b); ağırlıklar adımlar arasında paylaşılır.
  • nn.RNN: output (N, T, H), h_n (katman, N, H); batch_first=True.
  • Farklı uzunluklar: pad_sequence, gerçek uzunluk, pack_padded_sequence.
  • Uzun dizilerde gradyan söner ya da patlar; kırpma ve kapılı mimariler çare.
  • nn.Embedding kelime indekslerini öğrenilen vektörlere çevirir.

Uygulama İki katmanlı RNN

nn.RNN(16, 32, num_layers=2, batch_first=True) katmanını (4, 10, 16) girdiye uygula. output ve h_n şekillerini aynı satırda, ardından parametre sayısını yazdır (ikinci katmanın girdisi 32'dir).

Başlangıç kodu

model.py
import torch
from torch import nn

x = torch.zeros(4, 10, 16)

# buraya yaz

Örnek çözüm

model.py
import torch
from torch import nn

x = torch.zeros(4, 10, 16)

rnn = nn.RNN(16, 32, num_layers=2, batch_first=True)
output, h_n = rnn(x)
print(output.shape, h_n.shape)
print(sum(p.numel() for p in rnn.parameters()))

Beklenen çıktı

torch.Size([4, 10, 32]) torch.Size([2, 4, 32])
3712

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 RNN'in transformer'a göre temel zayıflığı nedir?

  • Adımlar sıralı işlenir, paralel hesaplanamaz Doğru cevap
  • Parametresi yoktur
  • Metin işleyemez
  • Gömme kullanamaz

Açıklama: Her adım bir öncekini beklediği için GPU paralelliğinden yararlanmak zordur.

2 İki katmanlı RNN kur.

Soru
rnn = nn.RNN(16, 32, ____=2, batch_first=True)
Cevap
rnn = nn.RNN(16, 32, num_layers=2, batch_first=True)

Açıklama: num_layers RNN katmanlarını üst üste dizer.

3 Kavramları eşleştir.

Kavram Anlamı
gizli durum Geçmiş özeti
dolgu Eşit uzunluk
sönen gradyan Uzun vade sorunu
gömme Kelime vektörleri

İleri seviye bölümündeki tüm dersler