Modo de entrenamiento frente a modo de evaluación
Por qué model.train() y model.eval() son diferentes
Modo de entrenamiento frente a modo de evaluación es una lección gratuita de Deep Learning Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Deep Learning Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Deep Learning Academy incluye 4 lecciones en total.
Un modelo tiene dos caras
Su red se comporta de forma diferente mientras aprende y mientras se evalúa. PyTorch denomina a estos dos estados modo train y modo eval. 🎭
Cambie al modo train
Antes de entrenar, llame a model.train. Esto indica a cada capa que se comporte como corresponde mientras el modelo aprende activamente de los datos.
model.train()Cambie al modo eval
Antes de validar o predecir, llame a model.eval. La red cambia entonces a un comportamiento estable y determinista para realizar mediciones fiables.
model.eval()A Dropout le importa
Dropout pone aleatoriamente a cero algunas neuronas durante el entrenamiento para evitar el sobreajuste. En el modo eval se desactiva por completo, de modo que todas las neuronas contribuyen a la predicción.
A Batch norm también le importa
Batch norm usa las estadísticas de cada lote durante el entrenamiento, pero en el modo eval cambia a promedios móviles almacenados para producir salidas estables y coherentes.
Solo es un interruptor
Estas llamadas no entrenan ni evalúan nada por sí solas. Simplemente cambian un flag que indica a las capas de dropout y norm qué comportamiento deben usar.
Eval no es no_grad
Es habitual confundirlos: eval cambia el comportamiento de las capas, mientras que no_grad detiene el seguimiento de gradientes. Resuelven problemas distintos, por lo que normalmente se usan juntos.
model.eval()
with torch.no_grad():
pred = model(x)Olvidar eval perjudica
Si valida sin eval, dropout y batch norm mantienen su comportamiento de entrenamiento. Sus puntuaciones se vuelven inestables y parecen peores de lo que realmente es el modelo.
Olvidar train perjudica
Lo contrario también es problemático: si deja el modelo en eval, dropout nunca se activa y su regularization desaparece silenciosamente durante el entrenamiento.
Intégrelo en el bucle
Convierta el cambio en un hábito: establezca train antes de la pasada de entrenamiento y eval antes de la validación, en cada época, para que el modelo nunca permanezca en el modo equivocado.
for epoch in range(epochs):
model.train()
# ... train ...
model.eval()
# ... validate ...Una llamada pequeña, un gran efecto
Son dos llamadas diminutas, pero deciden si sus métricas son fiables. Considere el cambio de mode una parte imprescindible de todos los bucles.
Comprobación rápida
¿Qué cambia realmente al llamar a model.eval()?
Resumen
Ha aprendido los dos modos: train activa dropout y las estadísticas de los lotes; eval los vuelve deterministas. Cambie de modo en cada época y combine eval con no_grad. 🎉
Aprende Python con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 30
- Lecciones
- 120
Preguntas frecuentes
¿La lección «Modo de entrenamiento frente a modo de evaluación» es gratis?
Sí — el texto completo de «Modo de entrenamiento frente a modo de evaluación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Deep Learning Academy, actualiza a CoddyKit PRO. El curso de Deep Learning Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Modo de entrenamiento frente a modo de evaluación»?
Por qué model.train() y model.eval() son diferentes Practicas Deep Learning Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Deep Learning Academy?
No se requiere experiencia previa. Deep Learning Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Modo de entrenamiento frente a modo de evaluación»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Deep Learning Academy?
Sí. Cada lección de Deep Learning Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Propagación hacia delante, pérdida, retropropagación y paso
- Escriba un bucle de entrenamiento mínimo
- Supervise la precisión durante el entrenamiento
- Modo de entrenamiento frente a modo de evaluación