Objetivo: separar claramente entrenamiento, validación, guardado y métricas.
def train_epoch(model, loader, criterion, optimizer, device):
model.train()
total_loss = 0.0
for x, y in loader:
x, y = x.to(device), y.to(device)
optimizer.zero_grad(set_to_none=True)
logits = model(x)
loss = criterion(logits, y)
loss.backward()
optimizer.step()
total_loss += loss.item() * x.size(0)
return total_loss / len(loader.dataset)Multiplicar por x.size(0) reconstruye la suma por ejemplo antes de la media global. Una
media ingenua de las medias de los batches sesga el último batch si es más pequeño.
Vista previa: el resto de la lección está reservado a los inscritos.
Tu acceso está vinculado a tu cuenta, no a este enlace. Inicia sesión con el mismo correo que usaste en clase: tu curso te espera, no hace falta volver a introducir el código.
Iniciar sesión¿Aún no tienes cuenta? Crear unaLos primeros módulos del curso son de acceso libre. Para el resto hay tres opciones: comprar este curso de una vez, suscribirte, o introducir el código entregado en clase.