我经历了this和this的帖子。
但是,我的问题很具体:
如果我的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级的概率吗?
答案 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。
想知道是否有一些文档专门提到了
您无法在Keras文档中明确找到它的原因是,它更加通用,与日志丢失和二进制分类的基本思想有关,并且与Keras无关。这些线程可能有助于说服您: