Keras:model.predict和model.predict_proba有什么区别?

29

我发现model.predictmodel.predict_proba都提供了一个相同的二维矩阵,表示每行数据在每个类别上的概率。

这两个函数有什么区别?

4个回答

27

预测

predict(self, x, batch_size=32, verbose=0)

为输入样本生成输出预测,以批处理方式处理样本。

参数

x: the input data, as a Numpy array.
batch_size: integer.
verbose: verbosity mode, 0 or 1.

返回

A Numpy array of predictions.

predict_proba

predict_proba(self, x, batch_size=32, verbose=1)

逐批次生成输入样本的类概率预测。

参数

x: input data, as a Numpy array or list of Numpy arrays (if the model has multiple inputs).
batch_size: integer.
verbose: verbosity mode, 0 or 1.

返回

A Numpy array of probability predictions.

编辑: 在最新版本的keras中,predict和predict_proba是相同的,即都给出概率。要获取类标签,请使用predict_classes。文档尚未更新。(摘自Avijit Dasgupta的评论)


2
但似乎 model.predict 也会给出一个概率预测的 numpy 数组,而不是直接的样本标签。 - jwm
真的吗!我不这么认为。预测并不一定会直接给出标签,它可以为标签提供分数,从中找到最佳标签,但预测不提供类概率。 - Wasi Ahmad
13
在最近版本的Keras中,predict和predict_proba的输出是相同的,即都会给出概率。如果想要得到类别标签,需要使用predict_classes函数。但是该函数的文档尚未更新。 - Avijit Dasgupta
2
在Keras 2.0.8中,似乎已经不存在model.predict_proba了。 - Martin Thoma

4
如之前的评论中所提到的(以及这里),目前没有任何区别。
然而,似乎只有为了向后兼容而存在(不确定是哪一个,我很想知道)。

2

仅作一点说明:事实上,在大多数分类器(例如Scikit)中,你都有predictpredict_proba两种方法。正如已经提到的,第一个方法预测类别,第二个方法为每个类别提供按升序排列的概率。


0
在最近的 Keras 版本(例如 2.6.0)中,predict 和 predict_proba 是相同的,即都提供概率。要获取类标签,请使用 predict_classes。文档尚未更新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接