Использование предсказаний Keras ImageDataGenerator для индексации приводит к возникновению ошибки типа unhashable

1

Я создал классификатор для ImageDataGenerator, созданный с помощью flow_from_directory например:

training_imGenProp = ImageDataGenerator(
    rescale=1. / 255,
    width_shift_range=0.02,
    height_shift_range=0.02,
)

training_imGen = training_imGenProp.flow_from_directory(
    'Location/to/train/images',
    target_size=(74, 448),
    batch_size=batchSize,
    class_mode='binary',
)

При запуске я получаю TypeError: unhashable type: 'numpy.ndarray' в последней строке следующего фрагмента кода:

predictions = classifier.predict_generator(testing_imGen)
predictions = (predictions >= 0.5).astype(int)
label_map = (training_imGen.class_indices)
inverted_label_map = dict((v, k) for k, v in label_map.items())  #flip k,v
predictions = [label_map[k] for k in predictions]

Что может быть причиной этого?

Кроме того, как мне приступить к созданию матрицы путаницы из результатов этого классификатора?

Это:

tn, fp, fn, tp = confusion_matrix(label_map, predictions).ravel()

вызывает ошибку ValueError: Found input variables with inconsistent numbers of samples: [2,(663, 1)].

  • 0
    Проблема, конечно, здесь label_map = dict((v,k) for k,v in label_map.items()) #flip k,v , тип k является numpy.ndarray ? Если это так, то просто говорится, что вы не можете использовать это в качестве ключа для словаря, потому что это не хэш-тип (для этого типа нет хеш-функции).
  • 0
    Также, пожалуйста, включите несколько фиктивных генераторов для набора данных и классификатора для воспроизведения ошибки, так как на данный момент я не могу запустить код.
Показать ещё 10 комментариев
Теги:
keras
indexing

1 ответ

2
Лучший ответ

Таким образом, после длительных lucubrations проблема была в последнем понимании списка, так как predictions были массивом колонок столбцов, такими как [[1],[1],[0],..., [0]].

Поэтому просто нужно было получить доступ к целочисленным значениям внутри:

textual_predictions = [s_label_map[k] for k in predictions.T[0]]

Кроме того, появилась еще одна ошибка, создающая матрицу путаницы, в которой в качестве входных переменных были неверные переменные:

tn, fp, fn, tp = confusion_matrix(testing_imGen.classes, predictions.T[0]).ravel()
  • 0
    Ты обалденный. большое спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню