nn.Linear
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 32/78
- 5 dk
nn.Linear, tam bağlı katman oluşturur.
nn.Linear
nn.Linear(girdi, çıktı), y = x Wᵀ + b hesaplar. Ağırlık matrisi (çıktı, girdi) şeklindedir; dikkat, NumPy alışkanlığının tersi:
l = nn.Linear(3, 2)
print(l.weight.shape) # torch.Size([2, 3])
print(l.bias.shape) # torch.Size([2])
x = torch.randn(5, 3)
print(torch.allclose(l(x), x @ l.weight.T + l.bias)) # TrueAğırlıklar varsayılan olarak küçük rastgele değerlerle (Kaiming düzgün) başlatılır; bias=False sapmayı kaldırır.
Ağırlık başlatma
Başlatma eğitimin hızını ve kararlılığını etkiler. nn.init modülü yaygın yöntemleri sunar; derin ReLU ağlarında Kaiming, tanh/sigmoid ağlarında Xavier tercih edilir:
l = nn.Linear(256, 256)
nn.init.kaiming_normal_(l.weight, nonlinearity="relu")
nn.init.zeros_(l.bias)
# tüm ağırlıkları sıfırlamak simetriyi bozamaz: tüm nöronlar aynı öğrenirAğırlıkların hepsi aynı değerle başlatılırsa her nöron aynı gradyanı alır ve aynı kalır; rastgelelik bu simetriyi kırar.
Uygulama Doğrusal katmanı elle hesapla
nn.Linear(3, 2) katmanının ağırlığını [[1, 0, -1], [2, 1, 0]], sapmasını [0.5, -1] yap (torch.no_grad() içinde copy_). x = torch.tensor([[1., 2., 3.]]) için çıktıyı tolist() ile, ardından x @ l.weight.T + l.bias ile aynı olduğunu torch.allclose ile yazdır.
Başlangıç kodu
import torch
from torch import nn
l = nn.Linear(3, 2)
x = torch.tensor([[1., 2., 3.]])
# buraya yazÖrnek çözüm
import torch
from torch import nn
l = nn.Linear(3, 2)
x = torch.tensor([[1., 2., 3.]])
with torch.no_grad():
l.weight.copy_(torch.tensor([[1., 0., -1.], [2., 1., 0.]]))
l.bias.copy_(torch.tensor([0.5, -1.]))
y = l(x)
print(y.tolist())
print(torch.allclose(y, x @ l.weight.T + l.bias))Beklenen çıktı
[[-1.5, 3.0]] True
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>nn.Linear(128, 10)</code> katmanının ağırlık şekli nedir?
- (128,)
- (10, 128) Doğru cevap
- (128, 10)
- (10,)
Açıklama: PyTorch ağırlığı (çıktı, girdi) olarak saklar.
2 Sapmasız bir doğrusal katman kur.
l = nn.Linear(10, 5, ____=False)
l = nn.Linear(10, 5, bias=False)
Açıklama: bias=False sapma parametresini kaldırır.
3 Özellikleri eşleştir (nn.Linear(3, 2)).
| Kavram | Anlamı |
|---|---|
weight.shape |
(2, 3) |
bias.shape |
(2,) |
parametre sayısı |
8 |
l(x) şekli (5, 3) girdide |
(5, 2) |