Keras模型的predict_proba()方法不存在。

5

我正在尝试通过调用 Keras 模型的 predict_proba() 方法来生成分类分数,但似乎这个方法并不存在!我在谷歌上看到了一些例子,它是否已经被弃用了?我正在使用 Keras 2.2.2。


你的模型是Sequential模型还是使用Functional API创建的? - today
今天是一个 Keras.models.Model() - LearnToGrow
1个回答

5
predict_proba()predict_classes()方法对使用函数式API创建的模型没有明确定义(即keras.models.Model())。这是因为使用函数式API创建的模型可能具有多个输出层,每个输出层具有不同的配置。因此,在这种情况下预测概率是没有意义的,即使您的模型输出概率也是如此。你提到的方法以及predict_classes()仅适用于Sequential模型(即keras.models.Sequential())。

这是因为使用函数式 API 创建的模型可能具有多个输出层,每个输出层都具有不同的配置。您可以举个例子来解释一下吗?MaskRCNN 可以是这种模型的一个例子吗? - LearnToGrow
@BetterEnglish 以这个为例:一个模型接收一张人脸照片并预测性别(即可能是二元交叉熵损失的一个输出层)和年龄(即另一个带有线性激活函数和均方误差作为损失的输出层)。然而,重要的是,无论模型具有一个还是多个输出层,如果您使用函数式API定义了它,都无法访问predict_proba()predict_classes()等方法。 - today
1
我知道如果我使用函数式API进行定义,我将无法访问predict_proba函数。我的问题是为什么我们不能定义这样的函数?在您的示例中,我认为我们无法这样做,因为我们同时具有分类和回归输出。我认为仅在分类层上定义predict_prob没有意义。 - LearnToGrow
@BetterEnglish “我认为仅在分类层上定义predict_prob是没有意义的。” 我理解你的观点,对于回归任务,您可能能够定义后验概率,但这可能因任务而异。我想这就是为什么一开始不支持它的原因。然而,在分类任务中,实际上模型的输出直接是概率(至少这是假设),因此model.predict()等同于model.predict_proba() - today

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