hidden_size
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 57/78
- 5 dk
hidden_size, LSTM'ın gizli durum vektörünün boyutudur.
hidden_size
hidden_size, gizli ve hücre durumlarının boyutudur; modelin "bellek kapasitesini" belirler. Büyük değer daha karmaşık desenleri tutar ama parametre sayısı yaklaşık karesel artar ve aşırı öğrenme riski büyür:
for H in [16, 64, 256]:
print(H, sum(p.numel() for p in nn.LSTM(8, H).parameters()))
# 16 1664 64 18944 256 272384Tipik değerler 64-512 arasıdır; seçim, veri büyüklüğüne göre doğrulamayla yapılır.
Çift yönlü ve çok katmanlı
bidirectional=True diziyi hem baştan sona hem sondan başa işler ve iki yönün çıktılarını birleştirir; bir kelimenin anlamı sonraki kelimelere de bağlıysa yararlıdır. num_layers katmanları üst üste dizer, dropout katmanlar arasına uygulanır:
lstm = nn.LSTM(16, 32, num_layers=2, bidirectional=True, dropout=0.2, batch_first=True)
output, (h_n, c_n) = lstm(torch.zeros(4, 10, 16))
print(output.shape) # torch.Size([4, 10, 64]): 2 yön × 32
print(h_n.shape) # torch.Size([4, 4, 32]): 2 katman × 2 yönÇift yönlü model geleceği gördüğü için canlı tahminde (bir sonraki adımı öngörmede) kullanılamaz.
Uygulama Çift yönlü LSTM
nn.LSTM(16, 32, num_layers=2, bidirectional=True, batch_first=True) katmanını (4, 10, 16) girdiye uygula. output ve h_n şekillerini aynı satırda yazdır. Ardından tek yönlü aynı yapılı LSTM'in parametre sayısı ile çift yönlününkini aynı satırda yazdır.
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)
cift = nn.LSTM(16, 32, num_layers=2, bidirectional=True, batch_first=True)
output, (h_n, c_n) = cift(x)
print(output.shape, h_n.shape)
tek = nn.LSTM(16, 32, num_layers=2, batch_first=True)
say = lambda m: sum(p.numel() for p in m.parameters())
print(say(tek), say(cift))Beklenen çıktı
torch.Size([4, 10, 64]) torch.Size([4, 4, 32]) 14848 37888
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 hidden_size iki katına çıkarılırsa <code>weight_hh</code> parametreleri yaklaşık kaç katına çıkar?
- 2
- 8
- Değişmez
- 4 Doğru cevap
Açıklama: weight_hh 4H × H şeklindedir; H iki katına çıkınca 4 kat büyür.
2 Diziyi iki yönde işle.
lstm = nn.LSTM(16, 32, ____=True, batch_first=True)
lstm = nn.LSTM(16, 32, bidirectional=True, batch_first=True)
Açıklama: bidirectional=True çıktı boyutunu iki katına çıkarır.
3 Şekilleri eşleştir (H=32, 2 katman, çift yön).
| Kavram | Anlamı |
|---|---|
output son boyut |
64 |
h_n ilk boyut |
4 |
h_n son boyut |
32 |
dropout |
Katmanlar arası |