CodeBlanks Logo Icon CodeBlanks

Özet - Transfer öğrenme

Bu grupta pre-trained model, fine-tuning ve feature extraction'ı öğrendin.

Özet: transfer öğrenme

Bu grupta:

  • Büyük veride öğrenilmiş genel özellikler yeni ve küçük görevlere taşınır.
  • Gövde korunur, baş yeni sınıf sayısına göre değiştirilir (in_features).
  • Önceden eğitilmiş modelin ön işlemesi (boyut, normalleştirme) aynen uygulanır.
  • Özellik çıkarımı: gövde donuk; ince ayar: küçük lr, parametre grupları, aşamalı açma.
  • Ne kadar eğitileceği veri miktarına ve alan benzerliğine bağlıdır.

Uygulama Önceden hesaplanmış özellikler

Rastgele (2, 3, 16, 16) boyutlu 10 görüntünün özelliklerini govde.eval() ve torch.no_grad() ile çıkar. Özellik matrisinin şeklini ve requires_grad değerini aynı satırda yazdır. Ardından özellikleri NumPy'a çevirip (.numpy()) dizinin şeklini yazdır.

Başlangıç kodu

model.py
import torch
from torch import nn

torch.manual_seed(0)
govde = nn.Sequential(
    nn.Conv2d(3, 16, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2),
    nn.Conv2d(16, 32, 3, padding=1), nn.ReLU(),
    nn.AdaptiveAvgPool2d(1), nn.Flatten())
bas = nn.Linear(32, 1000)
onceden = nn.Sequential(govde, bas)

X = torch.randn(10, 3, 16, 16)

# buraya yaz

Örnek çözüm

model.py
import torch
from torch import nn

torch.manual_seed(0)
govde = nn.Sequential(
    nn.Conv2d(3, 16, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2),
    nn.Conv2d(16, 32, 3, padding=1), nn.ReLU(),
    nn.AdaptiveAvgPool2d(1), nn.Flatten())
bas = nn.Linear(32, 1000)
onceden = nn.Sequential(govde, bas)

X = torch.randn(10, 3, 16, 16)

govde.eval()
with torch.no_grad():
    F = govde(X)
print(F.shape, F.requires_grad)
print(F.numpy().shape)

Beklenen çıktı

torch.Size([10, 32]) False
(10, 32)

Soru ve cevaplar

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

1 200 etiketli kedi/köpek fotoğrafıyla en iyi başlangıç hangisidir?

  • Sıfırdan büyük bir CNN eğitmek
  • Lojistik regresyon (ham pikseller)
  • KMeans
  • ImageNet modelinin gövdesini dondurup yeni baş eğitmek Doğru cevap

Açıklama: Az veri ve benzer alan: özellik çıkarımı en verimli yoldur.

2 Değerlendirme modunda özellik çıkar.

Soru
govde.____()
with torch.no_grad():
    F = govde(X)
Cevap
govde.eval()
with torch.no_grad():
    F = govde(X)

Açıklama: eval() BatchNorm ve dropout'u sabit davranışa alır.

3 Kavramları eşleştir.

Kavram Anlamı
backbone Gövde
head Baş
freeze Dondurma
fine-tune İnce ayar

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