Hoppa till innehållet
AI-grafen
E· Universitetdeep-learning· ca 60 min· utvecklande· verifierad 2026-09-20

Transfer learning

Kunna återanvända en förtränad modell, frysa lager och finjustera huvudet.

Förkunskaper

Intuition

Att träna en bildmodell från grunden kräver hundratusentals bilder. Men en modell som redan tränats på ImageNet har lärt sig kanter, texturer och former — sådant som gäller alla bilder. Byt bara ut sista lagret och lär det dina klasser.

Tre strategier:

StrategiNärHur
Feature extractionmycket lite data (< 1 000)frys allt, träna bara nytt huvud
Finjustera toppenmåttligt (1 000–10 000)frys tidiga lager, träna de sista + huvud
Full finjusteringmycket data, eller annan domänträna allt med låg lr

Ju mer din data liknar förträningsdatan, desto mer kan du frysa.

Kod

import torch, torch.nn as nn
from torchvision import models

m = models.resnet18(weights="IMAGENET1K_V1")
for p in m.parameters():
    p.requires_grad = False                 # frys allt
m.fc = nn.Linear(m.fc.in_features, 5)       # nytt huvud, 5 klasser (tränas)

opt = torch.optim.AdamW(m.fc.parameters(), lr=1e-3)
# … träna huvudet några epoker …

# Steg 2: tina de sista blocken och finjustera med mycket lägre lr
for p in m.layer4.parameters():
    p.requires_grad = True
opt = torch.optim.AdamW([
    {"params": m.layer4.parameters(), "lr": 1e-5},
    {"params": m.fc.parameters(), "lr": 1e-4},
])

Tre fel som kostar procentenheter:

  1. Fel normalisering. Använd samma medelvärde och std som förträningen (ImageNet: mean [0.485, 0.456, 0.406], std [0.229, 0.224, 0.225]).
  2. För hög lr på förtränade lager. 1e-5 till 1e-4, annars raderas det modellen kan.
  3. Glömt model.eval() — batchnorm i resnet uppdaterar sin statistik under träning även för frysta lager om du inte hanterar det.

Behärskning innebär

  • Återanvänder en förtränad modell
  • Väljer mellan frysning och full finjustering
  • Undviker de vanliga felen med normalisering och lr

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser