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.

¿Cómo adjuntar o obtener los nombres de archivo de un MapDataset desde image_dataset_from_directory() en Keras?

Estoy entrenando un autoencoder convolucional y tengo este código para cargar los datos (imágenes):

train_ds = tf.keras.preprocessing.image_dataset_from_directory(
    'ruta/a/las/imagenes',
    image_size=tamaño_imagen
)
normalization_layer = layers.experimental.preprocessing.Rescaling(1./255)

def adjust_inputs(imagenes, etiquetas):
    return normalization_layer(imagenes), normalization_layer(imagenes)

normalized_train_ds = train_ds.map(adjust_inputs)

Como no necesito las etiquetas de clase sino las imágenes mismas como Y, estoy asignando la función adjust_inputs al conjunto de datos. Pero ahora, cuando intento acceder al atributo filenames, obtengo un error: AttributeError: el objeto 'MapDataset' no tiene el atributo 'filenames'. Esto es lógico, porque MapDataset no es un Dataset.

¿Cómo puedo adjuntar o obtener los nombres de archivo de las imágenes cargadas que están en mi Dataset?

Realmente estoy sorprendido de que no haya una interfaz más sencilla para esto, parece algo bastante común.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para acceder a los nombres de archivo de las imágenes, es necesario modificar la función adjust_inputs para que también devuelva los nombres de archivo. Aquí tienes un ejemplo:

    def adjust_inputs(images, filenames):
        return normalization_layer(images), filenames
    
    normalized_train_ds = train_ds.map(lambda x, y: (normalization_layer(x), y))
    filenames = train_ds.file_paths
    

    Esto creará un nuevo dataset donde cada elemento consiste en imágenes normalizadas y sus nombres de archivo correspondientes. Además, train_ds.file_paths devuelve una lista de nombres de archivo de todas las imágenes en el dataset.

Comments are closed.