Ciclo di training del classificatore di immagini
È il momento di addestrare il classificatore di immagini! Userai la Net definita in precedenza e la allenerai a distinguere tra sette tipi di nuvole.
Per definire la loss e l'ottimizzatore, dovrai usare le funzioni di torch.nn e torch.optim, importate per te rispettivamente come nn e optim. Non devi modificare nulla nel ciclo di training: è esattamente come quelli che hai già scritto, con qualche logica in più per stampare la loss durante l'addestramento.
Questo esercizio fa parte del corso
Deep Learning intermedio con PyTorch
Istruzioni dell'esercizio
- Definisci il modello usando la tua classe
Netconnum_classesimpostato a7e assegnalo anet. - Definisci la funzione di loss come cross-entropy loss e assegnala a
criterion. - Definisci l'ottimizzatore come Adam, passandogli i parametri del modello e un learning rate di
0.001, e assegnalo aoptimizer. - Avvia il for-loop di training iterando su
imageselabelsdidataloader_train.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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}")