Bucle de entrenamiento del clasificador de imágenes
Es hora de entrenar el clasificador de imágenes. Vas a utilizar el Net que has definido antes y lo vas a entrenar para que distinga entre siete tipos de nubes.
Para definir la pérdida y el optimizador, tienes que utilizar funciones de torch.nn y torch.optim, importadas para ti como nn y optim, respectivamente. No hay que cambiar nada en el bucle de entrenamiento en sí: es exactamente igual que los que escribiste antes, con alguna lógica más para imprimir la pérdida durante el entrenamiento.
Este ejercicio forma parte del curso
Aprendizaje profundo intermedio con PyTorch
Instrucciones del ejercicio
- Define el modelo mediante tu clase
Netconnum_classesestablecido en7y asígnalo anet. - Define la función de pérdida como pérdida de entropía cruzada y asígnala a
criterion. - Define el optimizador como Adam, pásale los parámetros del modelo y la tasa de aprendizaje de
0.001y asígnalo aoptimizer. - Inicia el bucle for de entrenamiento e itera por el entrenamiento
imagesylabelsdedataloader_train.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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}")