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 preentrenados, 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.

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.

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.

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.

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.

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 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

en caso que tenga un proyecto de clasificacion binaria , tamb funciona la red pre entrenada inceptionv3?

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