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 funciona la codificación one hot en el generador de datos de imágenes de Keras?

Tengo 3 clases para las imágenes, gato, vaca y perro.

test_batches_1 = ImageDataGenerator(preprocessing_function=tf.keras.applications.vgg16.preprocess_input) \
    .flow_from_directory(directory=test_path_1, target_size=(224,224), classes=['gato', 'perro','vaca'], batch_size=10, shuffle=False)

Cuando hago

test_batches_1.class_indices

Obtengo esto

{'gato': 0, 'perro': 1, 'vaca': 2}

Y cuando hago esto: –

test_imgs1, test_labels1 = next(test_batches_1)
print(test_labels1)

Obtengo esto: –

[[1. 0. 0.]
 [1. 0. 0.]
 [0. 1. 0.]
 [0. 1. 0.]
 [0. 0. 1.]
 [0. 0. 1.]
 [0. 0. 1.]
 [0. 0. 1.]]

Lo cual es correcto, ya que tengo 2 imágenes de gato, 2 imágenes de perro y 4 imágenes de vaca.
Sin embargo, no entiendo por qué el gato con valor 0 se muestra como 1,0,0, o el perro con valor 1 se muestra como 0,1,0, y la vaca con valor 2 se muestra como 0,0,1.
¿Alguien puede ayudar con la lógica?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La salida [1, 0, 0] representa una codificación one-hot de la etiqueta de clase. En la codificación one-hot, cada etiqueta de clase se representa como un vector binario con un solo 1 en la posición correspondiente a la clase y 0 en las demás posiciones.

    En este caso, a la clase ‘gato’ se le asigna el índice 0, que se representa como [1, 0, 0], a la clase ‘perro’ se le asigna el índice 1, que se representa como [0, 1, 0], y a la clase ‘vaca’ se le asigna el índice 2, que se representa como [0, 0, 1].

    Esta codificación es útil para problemas de clasificación de múltiples clases, ya que permite al modelo diferenciar fácilmente entre las diferentes clases sin realizar suposiciones implícitas sobre las relaciones entre ellas.

Comments are closed.