如何从 predict_generator 为测试数据给出的类概率预测类标签?

数据挖掘 Python 深度学习 喀拉斯 图像分类
2021-09-30 15:49:53

在使用 Keras 的flow_from_directory方法在多类图像分类问题上训练我的模型时,该predict_generator函数给出了类概率。

那么,我的查询是如何为这些类概率获取相应的类标签?

3个回答

您只需以最大概率参加课程。这可以使用 numpy argmax 函数来完成。

我意识到这个问题是在一段时间前提出的,但遇到了这个问题,并认为会分享我所做的事情

最好使用 keras 模型中的 predict_classes 函数而不是 predict_generator - 我在使用它时遇到了问题,并且需要花费时间来完成。然而,这个函数的输入数据必须是一个数组,这意味着我们必须使用:


yFit=model.predict_classes(data)

#post which use the train generator to map the labels 
#back to actual names of the classes 

label_map = (train_generator.class_indices)
label_map = dict((v,k) for k,v in label_map.items()) #flip k,v
predictions = [label_map[k] for k in yFit]

只是为了简化接收类标签的事情,请尝试:

predict_img = '../Directory'

predict_img = image.load_img(predict_paper_1,target_size="your models target size")

转换为 numpy 数组

predict_img = image.img_to_array(predict_paper_1)

predict_img = np.expand_dims(predict_img,axis=0) # position from where converted image array is read

yFit=model.predict_classes(predict_img)


#post which use the trained generator to map the labels 
#back to actual names of the classes 

label_map = (train_gen.class_indices)

label_map = dict((v,k) for k,v in label_map.items()) #flip k,v

predictions = [label_map[k] for k in yFit[:,0]] # YFIT[:,0] INSURES THAT THE ARRAY IS READ IN THE RIGHT SHAPE

print(predictions)