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.

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?

Tags:  , , , ,

Answer

  1. Avatar 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.

Comments are closed.