了解keras模型。预测

时间:2019-08-25 14:26:57

标签: python machine-learning keras

我经历了thisthis的帖子。 但是,我的问题很具体: 如果我的model.predict()函数的输出针对一个类别为0和1的分类问题,例如:

array([[0.5147758 ],
       [0.48530805],
       [0.5122566 ],
       [0.4839405 ],
       [0.49831972],
       [0.4886117 ],
       [0.5130876 ],
       [0.50388396]], dtype=float32)

并且我将binary_crossentropy损失用于最后一层:

Dense(1, activation='sigmoid')

然后上述输出中的每个条目表示发生0级或1级的概率吗?

2 个答案:

答案 0 :(得分:2)

operator++激活将输出0到1之间的值,并且您的Dense层中只有一个单位的神经元。二元交叉熵损失将尝试使概率最大化,从而有利于两个可用类别之一。因此,确切地说,您的情况的输出实际上是发生类别1的概率。对于类别0的概率值,您将必须执行coll.begin()

最后一层中常用的其他激活类型是“ softmax”。此激活将为您提供每种发生类别的概率,因此,最后一层中的单位数将等于类别数。在此设置中,我们使用分类交叉熵损失。

答案 1 :(得分:1)

  

以上输出中的每个条目表示发生0级或1级的概率吗?

对此输出的常规解释是属于第1类的输出的概率。

直觉上,将它们想象为试图“复制”实际的二进制标签(0/1)也许很方便,因此它们越接近1.0,则表示1类的概率越高(反之亦然)。粗略地说,这实际上是std::is_base_of的定义,在这里使用:

  

交叉熵

     交叉熵损失(即对数损失)衡量分类模型的性能,该模型的输出为0到1之间的概率值。随着预测概率与实际标签的偏离,交叉熵损失会增加。因此,当实际观察标签为1时预测0.01的概率将很糟糕,并导致高损失值。完美的模型的对数损失为0。

     

cross entropy loss


  

想知道是否有一些文档专门提到了

您无法在Keras文档中明确找到它的原因是,它更加通用,与日志丢失和二进制分类的基本思想有关,并且与Keras无关。这些线程可能有助于说服您:

enter image description here

Loss & accuracy - Are these reasonable learning curves?