Bucla de antrenament a clasificatorului de imagini
A venit momentul să antrenezi clasificatorul de imagini! Vei folosi rețeaua Net definită anterior și o vei antrena să distingă între șapte tipuri de nori.
Pentru a defini funcția de pierdere și optimizatorul, va trebui să folosești funcții din torch.nn și torch.optim, importate deja ca nn, respectiv optim. Nu trebuie să modifici nimic în bucla de antrenament în sine: este identică cu cele scrise anterior, cu o logică suplimentară pentru afișarea pierderii în timpul antrenamentului.
Acest exercițiu face parte din cursul
Deep Learning intermediar cu PyTorch
Instrucțiuni pentru exercițiu
- Definește modelul folosind clasa
Netcunum_classessetat la7și atribuie-l variabileinet. - Definește funcția de pierdere ca pierdere de entropie încrucișată și atribuie-o variabilei
criterion. - Definește optimizatorul ca Adam, pasând parametrii modelului și o rată de învățare de
0.001, și atribuie-l variabileioptimizer. - Pornește bucla for de antrenament iterând peste
imagesșilabelsdindataloader_train.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Define the model
____ = ____
# Define the loss function
____ = ____
# Define the optimizer
____ = ____
for epoch in range(3):
running_loss = 0.0
# Iterate over training batches
____
optimizer.zero_grad()
outputs = net(images)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()
epoch_loss = running_loss / len(dataloader_train)
print(f"Epoch {epoch+1}, Loss: {epoch_loss:.4f}")