如何从Keras的model.predict()
中检索前5个预测?它只提供1个预测。有没有办法这样做?我不希望它作为评估指标。我只需要前5个预测。
答案 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:]