Özet - Transfer öğrenme
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 68/78
- 6 dk
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
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
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.
govde.____()
with torch.no_grad():
F = govde(X)
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 |