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

KerasTuner: buscando la mejor configuraci贸n para tu modelo

16

KerasTuner: buscando la mejor configuraci贸n para tu modelo

17

Monitoreo del entrenamiento en tiempo real: early stopping y patience

18

KerasTuner: construyendo el modelo

19

KerasTuner: buscando la mejor configuraci贸n para tu modelo

20

KerasTuner: buscando la mejor configuraci贸n para tu modelo

21

KerasTuner: buscando la mejor configuraci贸n para tu modelo

Almacenamiento y carga de modelos

22

Almacenamiento y carga de modelos: pesos y arquitectura

23

Criterios para almacenar los modelos

Fundamentos de aprendizaje por transferencia

24

Introducci贸n al aprendizaje por transferencia

25

Cu谩ndo utilizar aprendizaje por transferencia

26

Carga de sistemas pre-entrenados en Keras

27

API funcional de Keras

28

Uso sistemas pre-entrenados de TensorFlow Hub

Resultados de entrenamiento

29

Introducci贸n a variables relevantes del TensorBoard

30

An谩lisis y publicaci贸n de resultados del entrenamiento

31

Introducci贸n al despliegue de modelos en producci贸n

32

Siguientes pasos con deep learning

33

Comparte tu proyecto de detecci贸n de se帽as y certif铆cate

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

3D
10H
59M
41S

API funcional de Keras

27/33
Recursos

Hasta ahora solo hemos usado expl铆citamente modelos secuenciales (donde las capas conectan directa y linealmente), para esta ocasi贸n estamos manejando un modelo funcional, por lo que la conexi贸n de capas debe ser expl铆cita.

Conectando las nuevas capas

Anteriormente cortamos la configuraci贸n de InceptionV3 en el mixed7 para considerarlo nuestra 煤ltima capa no entrenable.

last_layers = pre_trained_model.get_layer("mixed7")
last_output = last_layers.output

Ahora la conectaremos con nuestras capas personalizadas. Recuerda que como manejamos un modelo funcional, debemos expresar expl铆citamente desde cu谩l capa viene conectada, esto lo haremos con la notaci贸n de par茅ntesis al final de la definici贸n de cada objeto.

Aplanaremos todos los datos desde una capa flatten, agregaremos una capa densa de 128 neuronas con activaci贸n relu y un dropout de 20%, finalmente definiremos la nueva salida con 24 neuronas de activaci贸n softmax (la configuraci贸n original trae 1000 posibles outputs pero podemos personalizarla a voluntad).

Con todas las capas conectadas, definiremos el modelo final con la clase Model de Keras, esta recibir谩 el inicio y el final del modelo.

x = tf.keras.layers.Flatten()(last_output)
x = tf.keras.layers.Dense(128, activation = "relu")(x)
x = tf.keras.layers.Dropout(0.2)(x)
x = tf.keras.layers.Dense(len(classes), activation = "softmax")(x)

model_keras = tf.keras.Model(pre_trained_model.input, x)

model_keras.compile(optimizer = "adam", loss = "categorical_crossentropy", metrics = ["accuracy"])
model_keras.summary()

Al compilar y resumir el modelo podemos notar que todas las capas despu茅s de mixed7 no existen, adem谩s de que la cantidad de par谩metros baj贸 de casi 22 millones a casi 14, adem谩s solo 5 son entrenables (lo que reducir谩 la complejidad del modelo).

Total params: 13,795,384
Trainable params: 4,820,120
Non-trainable params: 8,975,264

Entrenando el nuevo modelo

Entrenaremos el nuevo modelo con los nuevos generadores durante 5 茅pocas. Notar谩s que el entrenamiento durar谩 mucho m谩s tiempo pero no tendremos que crear las abstracciones del modelo desde 0.

history_keras = model_keras.fit(
    train_generator_resize,
    epochs = 5,
    validation_data = validation_generator_resize 
)

Podemos notar que incluso despu茅s de la primer iteraci贸n el accuracy y val_accuracy mantuvieron un tiempo de entrenamiento excelente, donde en la 茅pica final tuvimos una aproximaci贸n total en entrenamiento, una p茅rdida m铆nima y una precisi贸n en validaci贸n del 98.95%.

Epoch 1/5
215/215 [==============================] - 37s 118ms/step - loss: 0.1648 - accuracy: 0.9545 - val_loss: 0.0509 - val_accuracy: 0.9832

Epoch 5/5
215/215 [==============================] - 24s 111ms/step - loss: 9.9922e-04 - accuracy: 0.9999 - val_loss: 0.0385 - val_accuracy: 0.9895

Para corroborar los resultados de validaci贸n evaluaremos el modelo en el subset de pruebas.

model_keras.evaluate(test_generator_resize)

57/57 [==============================] - 7s 119ms/step - loss: 0.0463 - accuracy: 0.9865
[0.04633770138025284, 0.9864751696586609]

Obtuvimos una precisi贸n de m谩s del 98% en 8597 im谩genes, un rendimiento m谩s que aceptable para nuestro modelo.

Contribuci贸n creada por Sebasti谩n Franco G贸mez.

Aportes 4

Preguntas 3

Ordenar por:

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

o inicia sesi贸n.

The gradient, que es una revista de inteligencia artificial, habla de que ya hay modelos muy potentes pero que que toman mucho su tiempo, por eso ya se habla de models Fundation, modelos pre entrenados que son pontentes para que sean llevados a otras areas de conocimiento

No hab铆a comentado en las clases anteriores, pero este curso est谩 EXCELENTE!!!

En paralelo estos siguiendo el proyecto de clasificaci贸n de tumores, hice uso del modelo NASNetLarge, pero al parecer necesito entender c贸mo aplicarlo mejor, ya que no logr茅 mejorar el 60% de accuracy.

Esta clase es extremadamente util e interesante, aprendi demasiado :3