Uso de VGG16 y ResNet50 como modelos base
keras.applications.VGG16(weights='imagenet', include_top=False) y adición de una cabeza personalizada.
Uso de VGG16 y ResNet50 como modelos base es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 2 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.
Módulo Keras Applications
tf.keras.applications incluye decenas de arquitecturas preentrenadas que puede descargar con una sola línea. Dos modelos clásicos son VGG16 (una pila sencilla y profunda de convoluciones 3x3) y ResNet50 (conexiones residuales, más profunda y precisa).
Carga de VGG16 como base
Cargue VGG16 con los pesos de ImageNet, pero sin su capa de clasificación, para poder añadir la suya.
from tensorflow.keras.applications import VGG16
base = VGG16(
weights="imagenet", # download pretrained weights
include_top=False, # drop the 1000-class classifier
input_shape=(224, 224, 3) # standard ImageNet input size
)Comprensión de los argumentos
weights="imagenet": carga pesos preentrenados en lugar de valores aleatorios.include_top=False: elimina el clasificador denso original para que pueda añadir el suyo.input_shape=(224,224,3): altura, anchura y 3 canales RGB.
Establecer include_top=False es lo que permite reutilizar el modelo para una tarea nueva.
Congelación de la base
Establezca base.trainable = False para que los pesos convolucionales preentrenados permanezcan fijos durante la primera fase de entrenamiento. Solo aprenderá la nueva capa de clasificación.
base.trainable = False
print(len(base.trainable_weights)) # -> 0 when frozenGlobalAveragePooling2D
La base genera un mapa de características 3D como (7, 7, 512). GlobalAveragePooling2D promedia cada canal en su cuadrícula espacial y lo reduce a un único vector por canal, de longitud 512 en este caso.
Reemplaza una combinación enorme de Flatten y Dense, reduciendo drásticamente el número de parámetros y el sobreajuste.
from tensorflow.keras.layers import GlobalAveragePooling2D
# (batch, 7, 7, 512) -> (batch, 512)
pooled = GlobalAveragePooling2D()(base.output)Adición de la capa de salida Dense
Añada una capa Dense cuyo tamaño corresponda al número de clases. Use softmax para problemas multiclase o sigmoid para problemas binarios.
from tensorflow.keras import layers, Model
x = base.output
x = layers.GlobalAveragePooling2D()(x)
x = layers.Dropout(0.3)(x)
outputs = layers.Dense(10, activation="softmax")(x)
model = Model(inputs=base.input, outputs=outputs)Cambio a ResNet50
ResNet50 utiliza la misma API. Sus conexiones residuales (atajos) permiten entrenar redes mucho más profundas sin que desaparezcan los gradientes, y normalmente ofrece una mayor precisión en ImageNet que VGG16 con una velocidad similar.
from tensorflow.keras.applications import ResNet50
base = ResNet50(
weights="imagenet",
include_top=False,
input_shape=(224, 224, 3)
)
base.trainable = FalseVGG16 frente a ResNet50
- VGG16: aproximadamente 138 millones de parámetros, pila uniforme y sencilla de convoluciones 3x3, gran consumo de memoria y fácil de entender.
- ResNet50: aproximadamente 25 millones de parámetros, bloques residuales, más profunda, normalmente más precisa y ligera.
Para la mayoría de las tareas modernas de aprendizaje por transferencia, ResNet50 es la opción predeterminada más sólida.
Adaptación del preprocesamiento
Cada familia tiene su propio preprocess_input. VGG16 resta valores medios RGB, mientras que ResNet50 usa un escalado similar al estilo de caffe. Importe siempre el que corresponda a su base.
from tensorflow.keras.applications.resnet50 import preprocess_input
x = preprocess_input(image_batch) # required for correct resultsCompilación del modelo
Con la base congelada, compile y entrene la capa de clasificación con un optimizador normal.
model.compile(
optimizer="adam",
loss="categorical_crossentropy",
metrics=["accuracy"]
)
model.fit(train_ds, validation_data=val_ds, epochs=10)Inspección de la arquitectura
Llame a model.summary() para confirmar que la base está congelada (Non-trainable params es grande) y que solo la capa de clasificación es entrenable. Esta comprobación permite detectar pronto errores de configuración.
model.summary()
# Look at "Trainable params" vs "Non-trainable params"Comprobación rápida
Compruebe su dominio de la creación de un modelo de aprendizaje por transferencia en Keras.
Resumen
Ha cargado VGG16 y ResNet50 con weights="imagenet", include_top=False e input_shape=(224,224,3), ha congelado la base con base.trainable=False, ha agrupado las características con GlobalAveragePooling2D y ha añadido una capa de salida Dense.
ResNet50 es la opción predeterminada más sólida. A continuación: descongelar capas para realizar el ajuste fino.
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 «Uso de VGG16 y ResNet50 como modelos base» es gratis?
Sí — el texto completo de «Uso de VGG16 y ResNet50 como modelos base» 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 «Uso de VGG16 y ResNet50 como modelos base»?
keras.applications.VGG16(weights='imagenet', include_top=False) y adición de una cabeza personalizada. 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 2 de 4.
¿Cuánto tiempo toma la lección «Uso de VGG16 y ResNet50 como modelos base»?
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