es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Extraer datos del conjunto de datos tensorflow (por ejemplo, a numpy)

Estoy cargando imágenes a través de

data = keras.preprocessing.image_dataset_from_directory(
  './data', 
  labels='inferred', 
  label_mode='binary', 
  validation_split=0.2, 
  subset="training", 
  image_size=(img_height, img_width), 
  batch_size=sz_batch, 
  crop_to_aspect_ratio=True
)

Quiero usar los datos obtenidos también en rutinas que no son de TensorFlow. Por lo tanto, quiero extraer los datos, por ejemplo, a arreglos numpy. ¿Cómo puedo lograr esto? No puedo usar tfds.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para extraer los datos a matrices numpy, puedes utilizar el método as_numpy() del objeto dataset devuelto por keras.preprocessing.image_dataset_from_directory(). Este método devuelve un generador que produce lotes de datos como matrices numpy.

    Aquí tienes un ejemplo de código para extraer los datos como matrices numpy:

    import numpy as np
    import tensorflow as tf
    from tensorflow import keras
    
    # Define el directorio de datos de imágenes
    data_dir = './data'
    
    # Define el tamaño de imagen y el tamaño de lote
    img_height, img_width = 200, 200
    batch_size = 32
    
    # Carga las imágenes como un dataset de tensorflow
    data = keras.preprocessing.image_dataset_from_directory(
        data_dir,
        labels='inferred',
        label_mode='binary',
        validation_split=0.2,
        subset='training',
        image_size=(img_height, img_width),
        batch_size=batch_size,
        crop_to_aspect_ratio=True
    )
    
    # Extrae los datos a matrices numpy
    x_data, y_data = [], []
    for batch in data.as_numpy_iterator():
        x_batch, y_batch = batch
        x_data.append(x_batch)
        y_data.append(y_batch)
    
    x_data = np.concatenate(x_data)
    y_data = np.concatenate(y_data)
    
    # x_data es una matriz numpy 4D de forma (num_samples, img_height, img_width, num_channels)
    # y_data es una matriz numpy 1D de forma (num_samples,) que contiene etiquetas binarias
    

    En este ejemplo, primero cargamos las imágenes como un dataset de tensorflow utilizando keras.preprocessing.image_dataset_from_directory(). Luego, extraemos los datos a arrays numpy utilizando el método as_numpy_iterator() y un bucle for. Por último, concatenamos los lotes en las matrices numpy x_data e y_data. El resultado de x_data es una matriz numpy 4D de forma (num_samples, img_height, img_width, num_channels) que contiene los datos de las imágenes, mientras que y_data es una matriz numpy 1D de forma (num_samples,) que contiene las etiquetas binarias.

Comments are closed.