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

API funcional de Keras

23/28
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.

python 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.

```python 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).

python 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.

python 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%.

```python 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.

```python 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 5

Preguntas 5

Ordenar por:

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

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!!!

Decid铆 usar un dataset para clasificar im谩genes s铆smicas (350 imagenes aprox en total). El mejor resultado de val_accuracy que obtuve fue de 0.62. Con Transfer Learning usando InceptionV3 lleg贸 hasta 0.86 (usando la misma cantidad de 茅pocas, 20). Que tema tan interesante

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