keras:model.predict和model.predict_proba之间有什么区别

时间:2016-11-22 17:06:16

标签: python machine-learning deep-learning keras

我发现model.predict和model.predict_proba都给出了一个相同的2D矩阵,表示每行的每个类别的概率。

这两个功能有什么区别?

3 个答案:

答案 0 :(得分:25)

<强>预测

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的评论)

答案 1 :(得分:3)

请注意:实际上,大多数分类器中都同时有// Sanity checks. if (avdName) { if (!isCpuArchSupportedByRanchu(avdArch)) { APANIC("CPU Architecture '%s' is not supported by the QEMU2 emulator, (the classic engine is deprecated!)", avdArch); } std::string systemPath = getAvdSystemPath(avdName, sysDir); if (systemPath.empty()) { const char* env = getenv("ANDROID_SDK_ROOT"); if (!env || !env[0]) { APANIC("Cannot find AVD system path. Please define " "ANDROID_SDK_ROOT\n"); } else { APANIC("Broken AVD system path. Check your ANDROID_SDK_ROOT " "value [%s]!\n", env); } } } predict(例如在Scikit中)。如前所述,第一个预测类,第二个提供每个类的概率,以升序分类。

答案 2 :(得分:1)

正如之前的评论(以及here)所述,目前没有任何区别。
然而,似乎exist only for backward compatibility(不确定哪一个,我有兴趣知道)。