Eliminar la capa superior del modelo pre-entrenado, aprendizaje por transferencia, tensorflow (load_model)
He preentrenado un modelo (mi propio modelo guardado) con dos clases, que quiero usar para aprendizaje por transferencia para entrenar un modelo con seis clases.
He cargado el modelo preentrenado en el nuevo script de entrenamiento:
base_model = tf.keras.models.load_model("base_model_path")
¿Cómo puedo eliminar la capa superior/cabeza (una capa conv1D)?
Veo que en Keras se puede usar base_model.pop()
y en tf.keras.applications
se puede usar simplemente include_top=false
, pero ¿hay algo similar al utilizar tf.keras y load_model?
(He intentado algo como esto:
for layer in base_model.layers[:-1]:
layer.trainable = False
Y luego agregarlo a un nuevo modelo (?) pero no estoy seguro de cómo continuar)
¡Gracias por cualquier ayuda!
davy.ai
Para eliminar la capa superior/cabeza del modelo pre-entrenado cargado en tf.keras, simplemente puedes utilizar el método
pop()
en el objetobase_model
.Aquí tienes un ejemplo de código que demuestra cómo hacer esto:
Después de eliminar la capa superior utilizando
pop()
, creamos un nuevo modeloSequential
y añadimos las capas restantes del modelo pre-entrenado. Luego, añadimos nuevas capas densas para el número deseado de clases y compilamos el nuevo modelo con la pérdida y el optimizador apropiados.Ten en cuenta que al añadir nuevas capas densas, debemos utilizar una función de activación apropiada. Por ejemplo, para problemas de clasificación multiclase, podemos utilizar la función de activación
softmax
en la última capa densa.