¿Cómo se puede usar Tensorflow para estandarizar los datos usando Python?

En este artículo, vamos a ver cómo usar estandarizar los datos usando Tensorflow en Python .

¿Qué es la estandarización de datos?

El proceso de convertir la estructura organizativa de varios conjuntos de datos en un solo formato de datos estándar se conoce como estandarización de datos. Se ocupa de la modificación de conjuntos de datos después de su recopilación de varias fuentes y antes de su carga en los sistemas de destino. Requiere una cantidad significativa de tiempo e iteración para completarse, lo que resulta en un esfuerzo de integración y desarrollo extremadamente preciso, eficiente y que consume mucho tiempo.

¿Cómo se puede usar Tensorflow para estandarizar los datos?

Estamos usando el conjunto de datos de flores para comprender cómo se puede usar Tensorflow para estandarizar los datos usando Python. Ese conjunto de datos de flores contiene varios miles de imágenes de flores con nombres adecuados. Hay un subdirectorio para cada clase dentro de sus cinco subdirectorios. El conjunto de datos de flores se cargará en el entorno para su uso después de descargarlo mediante el método ‘get_file’.
Ahora, intentemos entender cómo podemos descargar el conjunto de datos de flores, pero antes de descargarlo, debemos importar algunas de las bibliotecas de Python y, para ejecutar el código a continuación, usamos Google Collaborate.

Importar bibliotecas

En el primer paso, importamos algunas de las bibliotecas importantes de tensorflow y python que usaremos en el proceso posterior.

Python

import matplotlib.pyplot as plt
import numpy as np
import os
import PIL
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.models import Sequential
import pathlib as pt

Descargar el conjunto de datos

estamos usando un conjunto de datos Flower que contiene cinco subdirectorios y uno para cada clase. entonces, para usar ese conjunto de datos, primero debemos descargarlo. y para descargar el conjunto de datos necesitamos el método get_file().

Python3

dataset_url = "https://storage.googleapis.com/\
download.tensorflow.org/example_images/flower_photos.tgz"
data_dir = tf.keras.utils.get_file('flower_photos', 
                                   origin=dataset_url, 
                                   untar=True)
data_dir = pt.Path(data_dir)

Ahora debería tener una copia del conjunto de datos después de la descarga. Hay un total de 3.670 imágenes. y puede contar las imágenes en el conjunto de datos usando el siguiente código:

Python3

img_count = len(list(data_dir.glob('*/*.jpg')))
print(img_count)

Producción:

3670

En el conjunto de datos tenemos 5 categorías de flores disponibles: rosas, tulipanes, margaritas, diente de león y girasoles. para que pueda verificar de acuerdo con su nombre de categoría y usando el código a continuación:

Python3

roses = list(data_dir.glob('roses/*'))
PIL.Image.open(str(roses[0]))

Cargue el conjunto de datos

Para cargar el conjunto de datos, debe definir algunos parámetros para el cargador. Ahora, necesitamos dividir el conjunto de datos y, de manera predeterminada, estamos usando el 60 % del conjunto de datos de flores como entrenamiento y el 40 % para pruebas.

Python3

batch_size = 32
img_height = 180
img_width = 180
  
train_ds = tf.keras.utils.image_dataset_from_directory(
    data_dir,
    validation_split=0.4,
    subset="training",
    seed=123,
    image_size=(img_height, img_width),
    batch_size=batch_size)

Producción:

Found 3670 files belonging to 5 classes.
Using 2202 files for training.

Estandarizar el conjunto de datos

Los valores del canal RGB están entre 0 y 255. Esto no es ideal para una red neuronal; en general, trate de mantener los valores de entrada lo más mínimo posible. 

Podemos estandarizar los valores para que estén entre [0, 1] usando una capa de reescalado (tensorflow.keras.layers.Rescaling)

Python3

# create normalization layer
nrmzln_layer = layers.experimental.preprocessing.Rescaling(1./255)
  
print("The map function is used to apply \
this layer to the dataset. ")
nrmlztn_ds = train_ds.map(lambda x,
                          y: (nrmlztn_layer(x), y))
image_batch, labels_batch = next(iter(nrmlztn_ds))
  
first_image = image_batch[0]
  
# pixel values are in the range of [0,1].
print("minimum pixel value:", np.min(first_image),
      " maximum pixel value:", np.max(first_image))

Producción:

La función de mapa se utiliza para aplicar esta capa al conjunto de datos. 

valor mínimo de píxel: 0.0

valor máximo de píxel: 0.87026095

Publicación traducida automáticamente

Artículo escrito por AnujMehla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *