¿Cómo utilizar varios conjuntos de datos de imágenes como entradas y salidas para la red Keras?
En este momento estoy tratando de unir un conjunto de datos que se encuentra disperso en diferentes carpetas en uno solo, este conjunto de datos no tiene etiquetas ya que es una aplicación similar a un codificador automático. El código en este momento está creando los conjuntos de datos de la siguiente manera:
Primer generador de datos: imágenes originales
clean_datagen = preprocessing.image_dataset_from_directory(clean_path, label_mode=None, batch_size=batch_dimension, shuffle=False, validation_split = validation_partition, subset=”validation”)
Segundo generador de datos: imágenes ruidosas
noisy_datagen = preprocessing.image_dataset_from_directory(noisy_path, label_mode=None, batch_size=batch_dimension, shuffle=False, validation_split = validation_partition, subset=”validation”)
Tercer generador de datos: imágenes desruidas
denoised_datagen = preprocessing.image_dataset_from_directory(denoised_path, label_mode=None, batch_size=batch_dimension, shuffle=False, validation_split = validation_partition, subset=”validation”)
Cuarto generador de datos: niveles de ruido
maps_datagen = preprocessing.text_dataset_from_directory(maps_path, label_mode=None, batch_size=batch_dimension, shuffle=False, validation_split = validation_partition, subset=”validation”)
La red toma entradas de la siguiente manera:
([x_images, x_noise_level_map, x_denoised], y_images)
donde:
– x_images debe provenir de noisy_datagen
– x_noise_level_map debe provenir de maps_datagen
– x_denoised debe provenir de denoised_datagen
– y_images debe provenir de clean_datagen
Así que necesito juntar todos estos conjuntos de datos. He estado investigando aquí y viendo a las personas usando flow_from_directory y algunos de los métodos que derivan de él, pero parece estar obsoleto. ¿Alguna idea de cómo hacer esto?
davy.ai
Una forma de combinar estos conjuntos de datos en uno sólo es utilizando la función
zip
en Python. Esta función combina múltiples iterables en un iterador basado en tuplas.Puedes crear un generador que produzca tuplas con los datos requeridos de la siguiente manera:
Luego, puedes iterar sobre este generador y extraer las entradas y salidas requeridas:
Alternativamente, puedes crear un generador de datos personalizado que obtenga datos de los cuatro conjuntos:
Luego, puedes utilizar este generador para entrenar la red: