Cómo utilizar TensorFlow 2.0 con Python

1

Redes neuronales con TensorFlow

2

Introducción a TensorFlow 2.0

Manejo y preprocesamiento de datos para redes neuronales

3

Uso de data pipelines

4

Cómo cargar bases de datos JSON

5

Cargar bases de datos CSV y BASE 64

6

Preprocesamiento y limpieza de datos

7

Keras datasets

8

Datasets generators

9

Aprende a buscar bases de datos para deep learning

10

Cómo distribuir los datos

11

Crear la red neural, definir capas, compilar, entrenar, evaluar y predicciones

Optimización de precisión de modelos

12

Métodos de regularización: overfitting y underfitting

13

Recomendaciones prácticas para ajustar un modelo

14

Métricas para medir la eficiencia de un modelo: callback

15

Monitoreo del entrenamiento en tiempo real: early stopping y patience

16

KerasTuner: construyendo el modelo

17

KerasTuner: buscando la mejor configuración para tu modelo

Almacenamiento y carga de modelos

18

Almacenamiento y carga de modelos: pesos y arquitectura

19

Criterios para almacenar los modelos

Fundamentos de aprendizaje por transferencia

20

Introducción al aprendizaje por transferencia

21

Cuándo utilizar aprendizaje por transferencia

22

Carga de sistemas pre-entrenados en Keras

23

API funcional de Keras

24

Uso sistemas pre-entrenados de TensorFlow Hub

Resultados de entrenamiento

25

Introducción a variables relevantes del TensorBoard

26

Análisis y publicación de resultados del entrenamiento

27

Introducción al despliegue de modelos en producción

28

Siguientes pasos con deep learning

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Carga de sistemas pre-entrenados en Keras

22/28
Recursos

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.

Funcionamiento de la API funcional de Keras

Estos modelos funcionales pueden dar mejores resultados que sus homólogos secuenciales, por lo que indagaremos como cargarlos y usarlos desde Keras.

Usando la API funcional de 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

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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