我有一个二进制分类问题,但是最后有一个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
吗?
谢谢!
答案 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。