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

Aprende Ingl茅s, Programaci贸n, AI, Ciberseguridad y m谩s a precio especial.

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

1 D铆as
12 Hrs
20 Min
5 Seg

Keras datasets

7/28
Recursos

Keras nos ofrece una serie de datasets predeterminados con los cuales alimentar modelos, estas bases de datos son ideales para probar el rendimiento de diferentes algoritmos de machine learning porque sus datos se encuentran bastante limpios y listos para ser digeridos.

En la documentaci贸n oficial de Keras puedes encontrar los datasets disponibles, para esta ocasi贸n trabajaremos con CIFAR100, un dataset de 60.000 im谩genes de 100 clases diferentes relacionadas a objetos del mundo como veh铆culos, animales y dem谩s.

Puedes leer la estructura b谩sica y un quickstart de uso en la documentaci贸n, si quieres m谩s detalle, puede ir a la p谩gina oficial del dataset donde tendr谩s acceso a informaci贸n m谩s espec铆fica.

Descargando y manipulando Keras datasets

Importaremos los m贸dulos a trabajar, donde el protagonista ser谩 TensorFlow.

{code-block} python import tensorflow as tf import numpy as np %matplotlib inline import matplotlib.pyplot as plt

Para extraer el dataset, haremos uso del m贸dulo de datasets de Keras (que viene incluido en TensorFlow).

{code-block} python from tensorflow.keras.datasets import cifar100

Cargaremos el dataset con la funci贸n load_data y ser谩 almacenada en 2 tuplas relacionadas a los datos de entrenamiento (que ser谩n 50.000) y los datos de prueba (los 10.000 restantes).

{code-block} python (x_train, y_train), (x_test, y_test) = cifar100.load_data(label_mode = "fine")

Si verificamos las dimensiones del set de entrenamiento, obtendremos en x un conjunto de 50.000 im谩genes de 32x32 en 3 canales RGB, mientras que las etiquetas ser谩n un array de 50.000 elementos del 0 al 99.

```{code-block} python print(x_train.shape) print(y_train.shape)

(50000, 32, 32, 3) (50000, 1) ```

Podemos acceder a cualquier elemento del dataset y graficarlo con matplotlib, donde la etiqueta ser谩 78, pero, 驴Qu茅 significa este valor?

{code-block} python num_image = 40 plt.imshow(x_train[num_image]) print(y_train[num_image]) 78

Generalmente las etiquetas son guardadas en sesiones diferentes, es decir, externamente existe un diccionario de 鈥渢raducci贸n鈥 de estos valores a su hom贸logo real. Para obtener esta traducci贸n, haremos su descarga desde un repositorio externo.

{code-block} bash !wget --no-check-certificate https://storage.googleapis.com/platzi-tf2/cifar100_labels.json \ -O /tmp/cifar100_labels.json

Deserializaremos el JSON para hacerlo compatible con los diccionarios de Python.

{code-block} python import json with open("/tmp/cifar100_labels.json") as fine_labels: cifa100r_labels = json.load(fine_labels)

Ahora podemos entender a qu茅 se refieren las etiquetas num茅ricas.

{code-block} python num_label = 78 plt.imshow(x_train[num_label]) print(cifar100_labels[y_train[num_label][0]]) Forest

Con esto hemos cargado un dataset funcional para ser procesado y digerido por tus modelos.

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

Aportes 19

Preguntas 1

Ordenar por:

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

!wget --no-check-certificate https://storage.googleapis.com/platzi-tf2/cifar100_labels.json \
    -O /tmp/cifar100_labels.json

Para el reto de la semana cargu茅 el dataset de Fashion MNIST:

Creo que es una bota jajajaja

Hay un error en uno de los print. La correcci贸n es la siguiente:

print(cifar100_labels[y_train[num_label][0]])

Utilice el Dataset fashion_mnist e hice la consulta al elemento 52

aparte me cree una variable de llaves, de acuerdo a la informacion del dataset de Keras

Pero no se si sea correcto hacer esto

import tensorflow as tf
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
from tensorflow.keras.datasets import fashion_mnist

(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
fashion_mnist_labels = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

num_image = 52
plt.imshow(x_train[num_image])
print(fashion_mnist_labels[y_train[num_image]])

Si est谩n en un entorno como VSCode y el comando wget no se los reconoce, pueden internar de la siguiente forma con curl

!curl -k -o  cifar100_labels.json https://storage.googleapis.com/platzi-tf2/cifar100_labels.json

Conjuntos de datos de Keras: una poderosa herramienta para el aprendizaje profundo
Keras, un popular marco de aprendizaje profundo creado sobre TensorFlow, proporciona una manera conveniente de acceder y utilizar varios conjuntos de datos para entrenar y evaluar sus modelos. Estos conjuntos de datos est谩n preprocesados 鈥嬧媦 listos para usarse con el m铆nimo esfuerzo, lo que le permite ahorrar tiempo y recursos valiosos.

Conjuntos de datos integrados:


  • Keras ofrece un pu帽ado de conjuntos de datos integrados, tambi茅n conocidos como conjuntos de datos de juguete, que son peque帽os y adecuados para principiantes o experimentaci贸n r谩pida. Estos conjuntos de datos se utilizan normalmente para tareas como clasificaci贸n o regresi贸n de im谩genes. Algunos ejemplos populares incluyen:

MNIST

  • Este conjunto de datos cl谩sico consta de d铆gitos escritos a mano (0-9) en varios tama帽os y orientaciones. Es un excelente punto de partida para los problemas de clasificaci贸n de im谩genes.

CIFAR-10

  • Conjunto de datos de peque帽as im谩genes en color que pertenecen a 10 clases diferentes (p. ej., aviones, autom贸viles, perros). Es un poco m谩s complejo que MNIST y se utiliza a menudo para la clasificaci贸n de im谩genes con redes neuronales convolucionales (CNN).

CIFAR-100

  • Una versi贸n extendida de CIFAR-10 con 100 clases de objetos, que proporciona una tarea de clasificaci贸n m谩s desafiante.

Boston Housing

  • Conjunto de datos que contiene informaci贸n sobre casas en Boston, Massachusetts. Se utiliza habitualmente para tareas de regresi贸n, como predecir los precios de la vivienda.
Hola!! En mi caso usando Fashi贸n MNIST obtuve esta imagen: ![](https://static.platzi.com/media/user_upload/image-df9ee0b4-5ef6-43c7-9518-0d44a0d30c5e.jpg)

Utilice la base de datos de fashion_mnist y obtuve un bolso

from tensorflow.keras.datasets import fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
num_image = 99
plt.imshow(x_train[num_image])
print(y_train[num_image])
print(labels[y_train[num_image]])

Pueden ocupar la funci贸n squeeze para quitarle una dimensi贸n a y_train. Ya que y_train[40] devuelve un [40] y queremos solo el numero para luego buscarlo en el json

print(y_train[40].squeeze(0)) -> devuelve 40 en vez de [40]
print(cifar100_labels[y_train[40].squeeze(0)]) -> ocupamos ese indice dentro del json

MNIST digits classification 馃槂

La importancia de cargar %matplotlib inline para contar con todos los beneficios de Matplot en Colab antes de cargar la librer铆a %matplotlib inline import matplotlib.pyplot as plt

Mas facil :

import pandas as pd
jso=pd.read_json("https://storage.googleapis.com/platzi-tf2/cifar100_labels.json")
jso[0][78]

#desacargamos la subclase.
(x_train,y_train),(x_text,y_test) = tf.keras.datasets.
cifar100.load_data(label_mode=鈥渇ine鈥)

from tensorflow.keras.datasets import fashion_mnist
 (x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()
plt.imshow(x_train[10])

Si estan de forma local y no pueden por alguna razon hacer wget o curl, tambi茅n puede ejecutar este codigo de python

import urllib.request
url = 'https://storage.googleapis.com/platzi-tf2/cifar100_labels.json'
filename = 'cifar100_labels.json'
urllib.request.urlretrieve(url, filename) 

Por si a alguien no le sale la importacion de keras, la siguiente puede ser una alternativa:

from tensorflow import keras

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar100.load_data()

Trabaje con el dataset de MNIST

from tensorflow.keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
assert x_train.shape == (60000, 28, 28)
assert x_test.shape == (10000, 28, 28)
assert y_train.shape == (60000,)
assert y_test.shape == (10000,)
num_image = 55
plt.imshow(x_train[num_image])
print(y_train[num_image])
num_image = 36
plt.imshow(x_train[num_image])
print(y_train[num_image])

Tambien cargu茅 el dataset fashion_mnist
![](