Keras排名前5位的预测

时间:2018-04-14 04:11:11

标签: tensorflow deep-learning keras

如何从Keras的model.predict()中检索前5个预测?它只提供1个预测。有没有办法这样做?我不希望它作为评估指标。我只需要前5个预测。

3 个答案:

答案 0 :(得分:0)

如果您想从图像分类问题中获得最佳预测, 您将收到一个热门代码预测。

class_prob = [0.98,0.50,0.60,0.90,0.87,0.79,0.87]
top_values_index = sorted(range(len(class_prob)), key=lambda i: class_prob[i])[-the_top_values_you_want_to_extract:]

你现在拥有所有五个最高值的索引。你现在可以循环遍历索引并获取类名。

只提取top_values_without_index

top_values= [class_prob[i] for i in np.argsort(class_prob)[-5:]]

答案 1 :(得分:0)

如果标签是正确类的索引:

top1 = 0.0
top5 = 0.0    
class_probs = model.predict(x)
for i, l in enumerate(labels):
    class_prob = class_probs[i]
    top_values = (-class_prob).argsort()[:5]
    if top_values[0] == l:
        top1 += 1.0
    if np.isin(np.array([l]), top_values):
        top5 += 1.0

print("top1 acc", top1/len(labels))
print("top1 acc", top5/len(labels))

答案 2 :(得分:0)

您可以尝试以下代码。

n = 5
y_preds = self.model.predict(x)
y_preds = np.argsort(y_preds, axis=1)[:,-n:]