我为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 :(得分:2)
因此,经过长时间的摸索,问题出在最后的列表理解之内,因为predictions
是一个列numpy数组,例如[[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()