Transfer Learning: aprovechando modelos pre-entrenados para nuevas tareas en Python (+Keras)

Transfer Learning: aprovechando modelos pre-entrenados para nuevas tareas en Python (+Keras)

El Transfer Learning es una técnica en Deep Learning que permite reutilizar un modelo pre-entrenado en una nueva tarea que es similar a la tarea original. El Transfer Learning puede ahorrar tiempo y recursos computacionales al aprovechar el conocimiento adquirido en la tarea original. El modelo pre-entrenado puede ser afinado o utilizado como un extractor de características para la nueva tarea.

Uso de modelos pre-entrenados en Keras

Keras es una popular biblioteca de Deep Learning que admite varios modelos pre-entrenados que se pueden utilizar para el Transfer Learning. Estos modelos pre-entrenados están entrenados en conjuntos de datos grandes y pueden reconocer patrones que son útiles para muchas tareas diferentes.

Importar bibliotecas

Comenzaremos importando las bibliotecas necesarias, incluyendo Keras para cargar el modelo pre-entrenado y NumPy para cálculos numéricos.

import numpy as np
from keras.applications import VGG16

Cargar modelo pre-entrenado

Luego, cargaremos un modelo pre-entrenado, VGG16, usando Keras.

# Cargar modelo pre-entrenado
modelo = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))

En este ejemplo, cargamos el modelo VGG16 pre-entrenado en el conjunto de datos ImageNet, excluyendo la capa superior y especificando la forma de entrada.

Congelar capas

A continuación, congelaremos las capas en el modelo pre-entrenado para evitar que se actualicen durante el entrenamiento.

# Congelar capas
for capa in modelo.layers:
    capa.trainable = False

Agregar nuevas capas

A continuación, agregaremos nuevas capas encima del modelo pre-entrenado para la nueva tarea. Agregaremos una capa Flatten para convertir la salida del modelo pre-entrenado en una matriz unidimensional, una capa Dense con 256 neuronas y una capa Dense final con el número de clases de salida.

# Agregar nuevas capas
x = Flatten()(modelo.output)
x = Dense(256, activation='relu')(x)
predicciones = Dense(num_clases, activation='softmax')(x)

En este ejemplo, agregamos una capa Flatten para convertir la salida del modelo pre-entrenado en una matriz unidimensional, una capa Dense con 256 neuronas y una capa Dense final con el número de clases de salida.

Compilar el modelo

A continuación, compilaremos el nuevo modelo y especificaremos la función de pérdida, el optimizador y la métrica de evaluación.

# Compilar modelo
modelo = Model(inputs=modelo.input, outputs=predicciones)
modelo.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

En este ejemplo, utilizamos una función de pérdida de entropía cruzada categórica, un optimizador Adam y la precisión como métrica de evaluación.

Entrenar el modelo

A continuación, entrenaremos el nuevo modelo en la nueva tarea.

# Entrenar modelo
modelo.fit(X_entrenamiento, y_entrenamiento, epochs=10, batch_size=32)

En este ejemplo, entrenamos el modelo durante 10 épocas con un tamaño de lote de 32.

En este tutorial, cubrimos los fundamentos del Transfer Learning y cómo utilizar modelos pre-entrenados en Keras. También mostramos cómo congelar capas, agregar nuevas capas, compilar el nuevo modelo y entrenar el nuevo modelo en una nueva tarea. El Transfer Learning es una técnica poderosa que puede ahorrar tiempo y recursos computacionales y es útil para muchas aplicaciones diferentes.

Espero que haya encontrado útil este tutorial sobre Transfer Learning en Python. Considere comprar mi libro sobre inteligencia artificial y aprendizaje automático: A.I. & Machine Learning — When you don’t know sh#t: A Beginner’s Guide to Understanding Artificial Intelligence and Machine Learning (https://a.co/d/98chOwB)

Leave a comment

Your email address will not be published. Required fields are marked *