Ajuste fino: descongelación y reentrenamiento
base_model.trainable = True, descongelación capa por capa y tasas de aprendizaje diferenciadas.
Ajuste fino: descongelación y reentrenamiento es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 3 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 Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
Cuándo realizar el ajuste fino
Después de que la extracción de características entrene la capa de clasificación, el ajuste fino permite obtener una precisión adicional al adaptar la parte superior de la base preentrenada a sus datos. Hágalo solo cuando la capa de clasificación esté estable; de lo contrario, los gradientes grandes de una capa de clasificación aleatoria pueden dañar la base.
Descongelación de la base
Establezca base.trainable = True para que los pesos puedan volver a actualizarse. Por sí solo, esto descongela todas las capas, lo que normalmente resulta demasiado agresivo.
base.trainable = True
print("Trainable layers:", sum(l.trainable for l in base.layers))Congelación de las primeras N capas
Las primeras capas contienen detectores genéricos de bordes y texturas que conviene conservar. Vuelva a congelar las primeras N capas y realice el ajuste fino solo de las más profundas y específicas de la tarea.
base.trainable = True
freeze_until = 100 # keep first 100 layers frozen
for layer in base.layers[:freeze_until]:
layer.trainable = False
for layer in base.layers[freeze_until:]:
layer.trainable = TruePor qué usar una tasa de aprendizaje muy baja
El ajuste fino requiere una tasa de aprendizaje muy pequeña, como 1e-5. Los pesos preentrenados ya son buenos; solo se necesitan ajustes leves. Una tasa alta provoca olvido catastrófico y borra los conocimientos de ImageNet que se buscaba aprovechar.
Recompilación después de descongelar
Debe recompilar después de cambiar los indicadores trainable para que Keras reconstruya qué pesos reciben gradientes. Establezca aquí la tasa de aprendizaje baja.
from tensorflow.keras.optimizers import Adam
model.compile(
optimizer=Adam(learning_rate=1e-5),
loss="categorical_crossentropy",
metrics=["accuracy"]
)El proceso en dos fases
- Fase 1 (extracción de características): base congelada; entrene la capa de clasificación con aproximadamente 1e-3 hasta que la precisión de validación se estanque.
- Fase 2 (ajuste fino): descongele las capas superiores, recompile con aproximadamente 1e-5 y continúe el entrenamiento.
Dividir el proceso de esta forma estabiliza el entrenamiento y protege las características preentrenadas.
Continuación del entrenamiento en la fase 2
Reanude el entrenamiento desde el punto en que terminó la fase 1 usando initial_epoch, para que los registros y las programaciones sigan siendo continuos.
history2 = model.fit(
train_ds,
validation_data=val_ds,
epochs=20,
initial_epoch=10 # phase 1 ended at epoch 10
)Programador de la tasa de aprendizaje
Un programador reduce la tasa de aprendizaje con el tiempo, de modo que las actualizaciones disminuyen a medida que el modelo converge. ReduceLROnPlateau la reduce automáticamente cuando la pérdida de validación deja de mejorar.
from tensorflow.keras.callbacks import ReduceLROnPlateau
lr_cb = ReduceLROnPlateau(
monitor="val_loss", factor=0.5,
patience=2, min_lr=1e-7
)
model.fit(train_ds, validation_data=val_ds,
epochs=20, callbacks=[lr_cb])Precaución con BatchNorm
ResNet y EfficientNet contienen capas de BatchNormalization que registran estadísticas acumuladas. Durante el ajuste fino, mantener congeladas las capas de BN (o en modo de inferencia) suele producir resultados más estables, ya que actualizar sus estadísticas con un conjunto de datos pequeño puede perjudicar la precisión.
Vigile el sobreajuste
El ajuste fino añade muchos parámetros entrenables, por lo que aumenta el riesgo de sobreajuste. Combátalo con aumento de datos, dropout y EarlyStopping sobre la pérdida de validación.
from tensorflow.keras.callbacks import EarlyStopping
stop = EarlyStopping(monitor="val_loss",
patience=4,
restore_best_weights=True)Integrarlo todo
Un proceso de ajuste fino robusto consiste en entrenar la cabeza, descongelar las capas superiores, congelar BN, recompilar con 1e-5 y entrenar con un programador y detención temprana. Compare siempre la precisión de validación antes y después para confirmar que el ajuste fino realmente ha ayudado.
Comprobación rápida
Compruebe sus conocimientos sobre el ajuste fino.
Resumen
Ha aprendido a hacer ajuste fino estableciendo base.trainable=True, volviendo a congelar las primeras N capas, recompilando con una tasa de aprendizaje muy pequeña (1e-5) y ejecutando un proceso de dos fases. Un programador de la tasa de aprendizaje y la detención temprana ayudan a mantener la estabilidad, y las capas BatchNorm requieren especial cuidado. Siguiente tema: modelos ligeros para su implementación en dispositivos edge.
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
- 53
- Lecciones
- 225
Preguntas frecuentes
¿La lección «Ajuste fino: descongelación y reentrenamiento» es gratis?
Sí — el texto completo de «Ajuste fino: descongelación y reentrenamiento» 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 Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «Ajuste fino: descongelación y reentrenamiento»?
base_model.trainable = True, descongelación capa por capa y tasas de aprendizaje diferenciadas. Practicas Learn AI with Python 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 Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python 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 3 de 4.
¿Cuánto tiempo toma la lección «Ajuste fino: descongelación y reentrenamiento»?
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 Learn AI with Python?
Sí. Cada lección de Learn AI with Python 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
- Conceptos y estrategias de aprendizaje por transferencia
- Uso de VGG16 y ResNet50 como modelos base
- Ajuste fino: descongelación y reentrenamiento
- MobileNet y EfficientNet para despliegue en el edge