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 de ejercicio
- Define el modelo mediante tu clase
Net
connum_classes
establecido en7
y 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.001
y asígnalo aoptimizer
. - Inicia el bucle for de entrenamiento e itera por el entrenamiento
images
ylabels
dedataloader_train
.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este 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}")