¿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.
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: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.