Keras,模型输出 predict_proba
Keras, output of model predict_proba
在docs中,predict_proba(self, x, batch_size=32, verbose=1)
是
Generates class probability predictions for the input samples batch by batch.
和returns
A Numpy array of probability predictions.
假设我的模型是二分类模型,输出是[a, b]
,因为a
是class_0
的概率,b
是[=的概率16=]?
这取决于您如何指定模型的输出和目标。它可以是两者。通常,当进行二元分类时,输出是单个值,即正预测的概率。一减输出是负预测的概率。
这里的情况有所不同,并且在某种程度上具有误导性,尤其是当您将 predict_proba
方法与具有相同名称的 sklearn
方法进行比较时。在 Keras(不是 sklearn 包装器)中,方法 predict_proba
与 predict
方法 完全相同。你甚至可以检查它 here:
def predict_proba(self, x, batch_size=32, verbose=1):
"""Generates class probability predictions for the input samples
batch by batch.
# Arguments
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.
# Returns
A Numpy array of probability predictions.
"""
preds = self.predict(x, batch_size, verbose)
if preds.min() < 0. or preds.max() > 1.:
warnings.warn('Network returning invalid probability values. '
'The last layer might not normalize predictions '
'into probabilities '
'(like softmax or sigmoid would).')
return preds
所以 - 在二进制 classification 情况下 - 你得到的输出取决于你的网络设计:
- 如果你的网络的最终输出是通过单个 sigmoid 输出获得的 - 那么
predict_proba
的输出只是分配给 class 1. 的概率
- 如果网络的最终输出是通过应用
softmax
函数的二维输出获得的 - 那么 predict_proba
的输出是一对 [a, b]
其中 a = P(class(x) = 0)
和 b = P(class(x) = 1)
.
第二种方法很少使用,使用第一种方法在理论上有一些优势 - 但我想告诉你 - 以防万一。
在docs中,predict_proba(self, x, batch_size=32, verbose=1)
是
Generates class probability predictions for the input samples batch by batch.
和returns
A Numpy array of probability predictions.
假设我的模型是二分类模型,输出是[a, b]
,因为a
是class_0
的概率,b
是[=的概率16=]?
这取决于您如何指定模型的输出和目标。它可以是两者。通常,当进行二元分类时,输出是单个值,即正预测的概率。一减输出是负预测的概率。
这里的情况有所不同,并且在某种程度上具有误导性,尤其是当您将 predict_proba
方法与具有相同名称的 sklearn
方法进行比较时。在 Keras(不是 sklearn 包装器)中,方法 predict_proba
与 predict
方法 完全相同。你甚至可以检查它 here:
def predict_proba(self, x, batch_size=32, verbose=1):
"""Generates class probability predictions for the input samples
batch by batch.
# Arguments
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.
# Returns
A Numpy array of probability predictions.
"""
preds = self.predict(x, batch_size, verbose)
if preds.min() < 0. or preds.max() > 1.:
warnings.warn('Network returning invalid probability values. '
'The last layer might not normalize predictions '
'into probabilities '
'(like softmax or sigmoid would).')
return preds
所以 - 在二进制 classification 情况下 - 你得到的输出取决于你的网络设计:
- 如果你的网络的最终输出是通过单个 sigmoid 输出获得的 - 那么
predict_proba
的输出只是分配给 class 1. 的概率
- 如果网络的最终输出是通过应用
softmax
函数的二维输出获得的 - 那么predict_proba
的输出是一对[a, b]
其中a = P(class(x) = 0)
和b = P(class(x) = 1)
.
第二种方法很少使用,使用第一种方法在理论上有一些优势 - 但我想告诉你 - 以防万一。