en caso que tenga un proyecto de clasificacion binaria , tamb funciona la red pre entrenada inceptionv3?
Cómo utilizar TensorFlow 2.0 con Python
Redes neuronales con TensorFlow
Introducción a TensorFlow 2.0
Manejo y preprocesamiento de datos para redes neuronales
Uso de data pipelines
Cómo cargar bases de datos JSON
Cargar bases de datos CSV y BASE 64
Preprocesamiento y limpieza de datos
Keras datasets
Datasets generators
Aprende a buscar bases de datos para deep learning
Cómo distribuir los datos
Crear la red neural, definir capas, compilar, entrenar, evaluar y predicciones
Optimización de precisión de modelos
Métodos de regularización: overfitting y underfitting
Recomendaciones prácticas para ajustar un modelo
Métricas para medir la eficiencia de un modelo: callback
Monitoreo del entrenamiento en tiempo real: early stopping y patience
KerasTuner: construyendo el modelo
KerasTuner: buscando la mejor configuración para tu modelo
Almacenamiento y carga de modelos
Almacenamiento y carga de modelos: pesos y arquitectura
Criterios para almacenar los modelos
Fundamentos de aprendizaje por transferencia
Introducción al aprendizaje por transferencia
Cuándo utilizar aprendizaje por transferencia
Carga de sistemas pre-entrenados en Keras
API funcional de Keras
Uso sistemas pre-entrenados de TensorFlow Hub
Resultados de entrenamiento
Introducción a variables relevantes del TensorBoard
Análisis y publicación de resultados del entrenamiento
Introducción al despliegue de modelos en producción
Siguientes pasos con deep learning
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Existen múltiples métodos para cargar sistemas pre-entrenados, para esta ocasión interiorizaremos en el de Keras.
Hasta ahora hemos trabajado con la API secuencial de Keras que nos permite apilar capas de manera lineal, su recorrido es unidireccional y siempre el mismo. La API Funcional de Keras rompe este paradigma y nos permite configurar redes a gusto, donde los saltos de capas pueden ser alterados y se pueden implementar configuraciones infinitamente más complejas.
Estos modelos funcionales pueden dar mejores resultados que sus homólogos secuenciales, por lo que indagaremos como cargarlos y usarlos desde Keras.
Antes de cargar la configuración es de vital importancia reconocer las dimensiones de entrada del modelo a usar, esto es especialmente necesario en contextos de detección de objetos y transfer learning.
No importa si nuestro dataset consta de imágenes en 4k, si el modelo espera un input de 300x300 debemos redimensionarlo, inclusive si perdemos features.
Para esta ocasión usaremos la arquitectura inception V3 que podrás encontrar en la documentación de Keras, puedes notar que sus dimensiones de entrada son (150, 150, 3) y nuestras imágenes son (28, 28, 1), por lo que debemos cambiar su tamaño y escala de colores (escalar imágenes hacia arriba no es recomendable dada la pérdida de información, por lo que siempre deberÃas buscar un modelo que se adapte a las dimensiones de tu dataset).
Crearemos nuevos data generators, donde modificaremos el target size y el color mode. Esto será aplicado a los 3 generadores.
```python train_generator_resize = train_datagen.flow_from_directory( train_dir, target_size = (150,150), batch_size = 128, class_mode = "categorical", color_mode = "rgb", subset = "training" )
validation_generator_resize = test_datagen.flow_from_directory( test_dir, target_size = (150,150), batch_size = 128, class_mode = "categorical", color_mode = "rgb", subset = "validation" )
test_generator_resize = train_datagen.flow_from_directory( test_dir, target_size = (150,150), batch_size = 128, class_mode = "categorical", color_mode = "rgb", ) ```
Ahora que los datos de entrada son compatibles, podremos importar la configuración desde Keras.
python
from tensorflow.keras.applications.inception_v3 import InceptionV3
Cargaremos nuestro modelo en la variable pre_trained_model que será una instancia de la clase InceptionV3, esta tendrá como parámetros un include_top a falso y el tensor de entrada que será de 150x150x3.
Posteriormente desactivaremos el entrenamiento de cada capa dado que poseemos la configuración óptima.
```python pre_trained_model = InceptionV3( include_top = False, input_tensor = tf.keras.layers.Input(shape = (150, 150, 3)) )
for layer in pre_trained_model.layers: layer.trainable = False
pre_trained_model.summary() ```
Si vemos la configuración del modelo obtendremos una lista gigantesca de capas, pero si nos concentramos en el final, nos encontraremos con casi 22 millones de parámetros.
python
Total params: 21,802,784
Trainable params: 0
Non-trainable params: 21,802,784
Para la configuración de InceptionV3 encontramos capas con configuraciones no secuenciales, estas serán sincronizadas en la capa mixed, donde se aplica todo el proceso de pooling y batch normalization.
Elegiremos una de estas capas mixed para cortar la arquitectura y agregar nuestros output, en esta ocasión elegiremos mixed7.
python
last_layers = pre_trained_model.get_layer("mixed7")
last_output = last_layers.output
Este será nuestro punto de partida para agregar nuestro modelo.
Contribución creada por Sebastián Franco Gómez.
Aportes 3
Preguntas 2
en caso que tenga un proyecto de clasificacion binaria , tamb funciona la red pre entrenada inceptionv3?
Carga de sistemas pre-entrenados en Keras
Keras, una biblioteca de aprendizaje profundo de alto nivel para Python, ofrece funcionalidades para cargar y utilizar modelos pre-entrenados de manera eficiente. Esto permite aprovechar el conocimiento adquirido en tareas relacionadas para mejorar el rendimiento en nuevas tareas, ahorrando tiempo y recursos computacionale
La forma que usé para integrar la última capa fue la siguiente:
model= tf.keras.Sequential([
pre_trained_model,
tf.keras.layers.Dense(2,activation="softmax")
])
model.summary()
Basándome en información de internet , hay que resaltar que mi modelo solo tiene 2 salidas
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?