CodeBlanks Logo Icon CodeBlanks

hidden_size

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 272384

Tipik 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

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)

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.

Soru
lstm = nn.LSTM(16, 32, ____=True, batch_first=True)
Cevap
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ı

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