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.

Obtener muestras clasificadas incorrectamente del conjunto de datos de TensorFlow.

Al leer los datos de la imagen a través de

train = keras.preprocessing.image_dataset_from_directory(
  './data',
  labels='inferred',
  label_mode='binary',
  validation_split=0.2,
  subset="training",
  image_size=(img_height, img_width),
  batch_size=sz_batch,
  crop_to_aspect_ratio=True
)

estos se almacenan en un conjunto de datos de TensorFlow. Leo los datos de validación con la misma rutina. Para analizar mi NN (una NN secuencial de TensorFlow), quiero graficar las muestras clasificadas incorrectamente (imágenes). Puedo obtener fácilmente las predicciones a través de

pred = model.predict(validation)

Pero ¿cómo puedo obtener las muestras clasificadas incorrectamente del conjunto de datos de TensorFlow?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para obtener las muestras clasificadas incorrectamente del conjunto de datos de TensorFlow, puedes iterar sobre el conjunto de datos y comparar las etiquetas predichas con las etiquetas reales. El índice de las muestras clasificadas incorrectamente se puede almacenar en una lista o un arreglo numpy, que luego se puede usar para extraer las imágenes correspondientes.

    Aquí tienes un ejemplo de fragmento de código:

    import numpy as np
    
    # obtener predicciones
    pred = model.predict(validation)
    
    # inicializar variables
    wrong_idx = []
    i = 0
    
    # iterar sobre el conjunto de datos
    for data, label in validation:
        # obtener las etiquetas reales
        actual = np.argmax(label.numpy(), axis=1)
        # obtener las etiquetas predichas
        predicted = np.argmax(pred[i:i+len(data)], axis=1)
        # comparar las etiquetas y almacenar los índices de las muestras clasificadas incorrectamente
        indices = np.where(actual != predicted)[0]
        wrong_idx += i + indices.tolist()
        i += len(data)
    
    # obtener las muestras clasificadas incorrectamente
    wrong_samples = validation.unbatch().skip(wrong_idx).take(len(wrong_idx))
    

    En este ejemplo, actual y predicted son arreglos numpy que contienen las etiquetas reales y predichas, respectivamente. La variable indices contiene los índices de las muestras clasificadas incorrectamente, que se almacenan en wrong_idx.

    Finalmente, el método unbatch() se utiliza para convertir el conjunto de datos nuevamente en muestras individuales, y los métodos skip() y take() se utilizan para extraer las muestras clasificadas incorrectamente según sus índices.

Comments are closed.