BatchDataSet: obtener matriz de imágenes y etiquetas.
Aquí está el conjunto de datos por lotes que creé antes para ajustarlo al modelo:
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
train_path,
label_mode='categorical', # se utiliza para la clasificación multiclase. Son etiquetas codificadas en one-hot para cada clase
validation_split=0.2, # porcentaje del conjunto de datos a considerar para validación
subset="training", # este subconjunto se utiliza para el entrenamiento
seed=1337, # se establece la semilla para reproducir los mismos resultados
image_size=img_size, # forma de las imágenes de entrada
batch_size=batch_size, # esto debe coincidir con el tamaño de lote del modelo
)
valid_ds = tf.keras.preprocessing.image_dataset_from_directory(
train_path,
label_mode='categorical',
validation_split=0.2,
subset="validation", # este subconjunto se utiliza para la validación
seed=1337,
image_size=img_size,
batch_size=batch_size,
)
Si ejecuto un ciclo for
, puedo acceder al conjunto de matrices de imágenes y etiquetas:
for images, labels in train_ds:
print(labels)
Pero si intento acceder de esta manera:
INTENTO 1)
images, labels = train_ds
Obtengo el siguiente error de valor: ValueError: hay demasiados valores para desempaquetar (se esperaban 2)
INTENTO 2:
Si intento desempaquetarlo de esta manera:
images = train_ds[:,0] # obtener la columna 0 de todas las filas
labels = train_ds[:,1] # obtener la columna 1 de todas las filas
Obtengo el siguiente error: TypeError: el objeto 'BatchDataset' no admite la indexación
¿Existe alguna forma de extraer las etiquetas e imágenes sin utilizar un ciclo for
?
davy.ai
No, no es posible extraer las etiquetas e imágenes del conjunto de datos por lotes sin pasar por un bucle for o utilizar alguna otra forma de iteración. Esto se debe a que el conjunto de datos por lotes está diseñado para cargar y preprocesar datos en lotes para un entrenamiento eficiente y no se puede desempaquetar o acceder directamente como un array o lista normal. El método de bucle for que compartiste es la forma recomendada de extraer las imágenes y etiquetas del conjunto de datos por lotes.