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