从2类softmax输出获得单个值预测

时间:2018-10-08 05:45:16

标签: python machine-learning keras deep-learning

我有一个二进制分类问题,但是最后有一个Dense(2, activation='softmax')层。因此,我得到了诸如[0.2, 0.8][1.0, 0.0]之类的预测。我可以正确计算得出的单值预测吗?

single_value_prediction = predictions[predicted_class] if predictions[1] > predictions[0] else 1 - predictions[predicted_class]

那么[0.2, 0.8]会在0.8中产生[1.0, 0.0]0.0吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

使用以下方法获得预测后

preds = model.predict(test_data)

preds数组的形状为(n_samples, 2)。现在,要查找预测的类,您可以轻松使用np.argmax()

preds_classes = np.argmax(preds, axis=-1)

或者,如果您的模型是顺序模型,即keras.models.Sequential(而不是使用功能API定义的模型,即keras.model.Model),则可以直接使用predict_classes()方法:

preds_classes = model.predict_classes(test_data)

如果您想查找预测班级的概率(即概率最高的班级),则可以使用np.max()

preds_class_prob = np.max(preds, axis=-1) 

答案 1 :(得分:0)

如果您希望“ [0.2,0.8]的结果为0.8,[1.0,0.0]的结果为0.0”,则可以尝试prediction = model.predict(data)[:, 1]

如果要同时将概率转换为类,请尝试prediction = model.predict(data)[:, 1] > 0.5。或按照@today的建议使用np.argmax。