CodeBlanks Logo Icon CodeBlanks

Feature map

Conv2d çıktısı, öğrenilen özellik haritasıdır (feature map).

Özellik haritası

Her filtrenin çıktısı bir özellik haritasıdır: filtrenin aradığı desenin görüntünün neresinde ne kadar güçlü bulunduğunu gösterir. Katmanlar ilerledikçe haritalar küçülür ama kanal sayısı artar:

# girdi     (N, 3, 32, 32)
# blok 1 -> (N, 32, 16, 16)   kenarlar, renkler
# blok 2 -> (N, 64, 8, 8)     dokular, parçalar
# blok 3 -> (N, 128, 4, 4)    nesne parçaları

Derin katmanlardaki her nöron özgün görüntünün daha büyük bir bölgesine bakar; buna alıcı alan (receptive field) denir.

Blok yapısı

Bir CNN bloğu genellikle evrişim, normalleştirme, aktivasyon ve havuzlamadan oluşur. Blokları bir fonksiyonla üretmek kodu kısaltır:

def blok(giris, cikis):
    return nn.Sequential(
        nn.Conv2d(giris, cikis, 3, padding=1),
        nn.BatchNorm2d(cikis),
        nn.ReLU(),
        nn.MaxPool2d(2))

govde = nn.Sequential(blok(3, 32), blok(32, 64), blok(64, 128))
print(govde(torch.zeros(1, 3, 32, 32)).shape)   # torch.Size([1, 128, 4, 4])

BatchNorm2d her kanalın aktivasyonlarını normalleştirerek eğitimi hızlandırır ve kararlı yapar.

Uygulama Gövde şekilleri

Verilen blok fonksiyonuyla üç bloklu bir gövde kur (3→16→32→64 kanal). (2, 3, 64, 64) girdi için her bloktan sonraki şekli alt alta yazdır.

Başlangıç kodu

model.py
import torch
from torch import nn

def blok(giris, son):
    return nn.Sequential(nn.Conv2d(giris, son, 3, padding=1), nn.BatchNorm2d(son), nn.ReLU(), nn.MaxPool2d(2))

x = torch.zeros(2, 3, 64, 64)

# buraya yaz

Örnek çözüm

model.py
import torch
from torch import nn

def blok(giris, son):
    return nn.Sequential(nn.Conv2d(giris, son, 3, padding=1), nn.BatchNorm2d(son), nn.ReLU(), nn.MaxPool2d(2))

x = torch.zeros(2, 3, 64, 64)

govde = nn.Sequential(blok(3, 16), blok(16, 32), blok(32, 64))
for b in govde:
    x = b(x)
    print(x.shape)

Beklenen çıktı

torch.Size([2, 16, 32, 32])
torch.Size([2, 32, 16, 16])
torch.Size([2, 64, 8, 8])

Soru ve cevaplar

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

1 İki ardışık 3×3 evrişimin (stride 1) alıcı alanı kaç piksel genişliğindedir?

  • 3
  • 9
  • 5 Doğru cevap
  • 6

Açıklama: Her 3×3 katman alıcı alanı 2 piksel büyütür: 3 + 2 = 5.

2 Kanal başına normalleştirme ekle.

Soru
nn.____(32)
Cevap
nn.BatchNorm2d(32)

Açıklama: BatchNorm2d kanal sayısını parametre olarak alır.

3 Katmanları eşleştir.

Kavram Anlamı
Conv2d Desen çıkarır
BatchNorm2d Normalleştirir
ReLU Doğrusal olmama
MaxPool2d Küçültür

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