Träna ett neuronnät i PyTorch
Kunna skriva en komplett träningsloop — modell, loss, optimerare, batchar, utvärdering — och läsa av träningskurvan för att se om modellen lär sig, underanpassar eller överanpassar.
Kod
import torch, torch.nn as nn
model = nn.Sequential(nn.Linear(784, 128), nn.ReLU(), nn.Linear(128, 10))
loss_fn = nn.CrossEntropyLoss()
opt = torch.optim.SGD(model.parameters(), lr=0.1)
for epoch in range(5):
model.train()
for X, y in train_loader: # batchar av (N, 784), (N,)
opt.zero_grad()
loss = loss_fn(model(X), y)
loss.backward()
opt.step()
model.eval()
with torch.no_grad():
correct = sum((model(X).argmax(1) == y).sum().item() for X, y in val_loader)
print(epoch, loss.item(), correct / len(val_loader.dataset))
Fem rader som är hela deep learning: nollställ, forward, loss, backward, steg.
Intuition
Läs kurvorna:
| Träningsloss | Valideringsloss | Diagnos |
|---|---|---|
| sjunker | sjunker | lär sig — fortsätt |
| sjunker | stiger | överanpassning — memorerar träningsdata |
| hög, står stilla | hög | underanpassning — för enkel modell eller för låg lr |
| exploderar / NaN | — | för hög lr eller onormaliserad data |
CrossEntropyLoss tar råa utdata (logits) och gör softmax internt — lägg inte till
softmax själv. Validera alltid på data modellen inte tränats på.
Formellt
En epok = ett varv över all träningsdata. Batchstorlek styr hur många exempel
per gradientsteg. Adam (torch.optim.Adam) är en populär optimerare som anpassar
steglängden per parameter och ofta fungerar utan finjustering av lr (börja med 1e-3).
Behärskning innebär
- Skriver en träningsloop med nn.Module, loss och optimizer
- Tolkar tränings- och valideringsloss över epoker
Förkunskaper
- DBackpropagationkrävs
- DPyTorch — tensorer och autogradkrävs
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
Leder till
- DMNIST från grunden
- DTransformers — arkitekturen
- EBatch- och layernormalisering
- ECheckpoints, sparande och återstart
- EFinjustering av språkmodeller
- EGPU-minne, gradientackumulering och batchar
- EOptimerare: momentum, Adam, schemaläggning
- ERegularisering: dropout, weight decay, early stopping
- EReproducerbarhet
- ETransfer learning
- ETräningsdiagnostik
- FDistribuerad träning
- FMixed precision-träning
Del av målen (28)
- Träna ditt första neuronnät
- Träna neuronnät på riktigt
- Bygg en transformer från grunden
- Förstå hur generativ AI fungerar
- Finjustera och driva egna modeller
- Bildklassificering med faltningsnät
- AI-säkerhet i praktiken
- Ansvarsfull AI i praktiken
- Finjustera en modell med LoRA
- Reproducera ett paper
- Statistik för experiment
- Kör modeller billigare: kvantisering
- Bygg ett röstgränssnitt
- Språkmodeller i praktiken
- Frontier Lab — självständigt forskningsprojekt
- Djup reinforcement learning
- Bygg en agent som går att lita på
- Tolka en språkmodell
- Bygg ett RAG-flöde med spårbara källor
- Multimodala system
- Bygg ett NLP-system end-to-end
- Evals i praktiken
- AI i produktion
- Generativa modeller i djupet
- Bygg ett minnessystem för en agent
- Bygg en AI-tjänst som håller i drift
- AI-tjänst i drift
- AI, etik och samhälle