Özet - RNN
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 52/78
- 6 dk
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.Embeddingkelime 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
import torch
from torch import nn
x = torch.zeros(4, 10, 16)
# buraya yazÖrnek çözüm
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.
rnn = nn.RNN(16, 32, ____=2, batch_first=True)
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 |