CodeBlanks Logo Icon CodeBlanks

nn.Module nedir?

nn.Module, tüm neural network modellerinin taban sınıfıdır.

nn.Module nedir?

nn.Module, PyTorch'ta her modelin ve katmanın türediği temel sınıftır. Bir modül parametrelerini, alt modüllerini ve ileri yayılım hesabını bir arada tutar:

class Model(nn.Module):
    def __init__(self):
        super().__init__()
        self.katman = nn.Linear(4, 3)

    def forward(self, x):
        return self.katman(x)

m = Model()
print(m(torch.zeros(2, 4)).shape)   # torch.Size([2, 3])

Modül çağrılırken m(x) yazılır; bu, arka planda forward'u çalıştırır.

Hazır modüller

torch.nn içinde katmanlar (Linear, Conv2d, LSTM), aktivasyonlar (ReLU, Sigmoid), kayıplar (MSELoss, CrossEntropyLoss) ve düzenleyiciler (Dropout, BatchNorm1d) birer modüldür. Basit zincirler için nn.Sequential sınıf yazmadan model kurar:

model = nn.Sequential(
    nn.Linear(4, 16),
    nn.ReLU(),
    nn.Linear(16, 3),
)
print(model(torch.zeros(5, 4)).shape)   # torch.Size([5, 3])

Uygulama İlk modül

nn.Sequential(nn.Linear(4, 16), nn.ReLU(), nn.Linear(16, 3)) modelini kur. torch.zeros(5, 4) girdisinin çıktı şeklini ve modelin uzunluğunu (len(model)) aynı satırda yazdır.

Başlangıç kodu

model.py
import torch
from torch import nn

# buraya yaz

Örnek çözüm

model.py
import torch
from torch import nn

model = nn.Sequential(nn.Linear(4, 16), nn.ReLU(), nn.Linear(16, 3))
print(model(torch.zeros(5, 4)).shape, len(model))

Beklenen çıktı

torch.Size([5, 3]) 3

Soru ve cevaplar

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

1 Modeli çalıştırmak için neden <code>m.forward(x)</code> yerine <code>m(x)</code> yazılır?

  • m(x) kancaları (hook) ve iç işleri de çalıştırır Doğru cevap
  • Daha kısa olduğu için
  • forward yoktur
  • Fark yoktur

Açıklama: __call__ forward'u sarmalar; doğrudan forward çağırmak bu adımları atlar.

2 Katmanları sırayla zincirle.

Soru
model = nn.____(nn.Linear(4, 8), nn.ReLU(), nn.Linear(8, 2))
Cevap
model = nn.Sequential(nn.Linear(4, 8), nn.ReLU(), nn.Linear(8, 2))

Açıklama: nn.Sequential girdiyi modüllerden sırayla geçirir.

3 Modülleri eşleştir.

Kavram Anlamı
nn.Linear Doğrusal katman
nn.ReLU Aktivasyon
nn.CrossEntropyLoss Kayıp
nn.Sequential Sıralı kap

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