Keras中损失函数的含义?

问题描述 投票:0回答:1

我在python中用keras做了一个神经网络,但不太明白损失函数是什么意思,所以这里先介绍一下:我用0-9类的扑克牌数据集,用OneHotEncoding写成向量。

所以这里先介绍一些基本信息:我使用的是扑克牌手数据集,有0-9个类,我用OneHotEncoding将其写成向量。我在最后一层使用了softmax激活,所以我的输出告诉我对于向量中的10个条目中的每一个条目,如果样本属于某个类的概率。例如:我的真实输入它(0,1,0,0,0,0,0,0,0,0),这意味着等级1(从0-9意味着从无牌到皇家同花),等级1意味着一对(如果你懂扑克)。 用神经网,它得到的和输出是(0.4, 0.2, 0.1, 0.1, 0.2, 0,0,0,0,0),这意味着我的样本有40%属于0类,20%属于1类,以此类推。

当我使用keras的mode.evaluation()时,我得到了类似于0.16的损失,我不知道如何解释。这是否意味着,在平均水平上,我的预测与真实的偏差为0.16? 因此,如果我对0类的预测是0.5,也可能是0.66或0.34?

请发来帮助!

python keras neural-network loss-function loss
1个回答
1
投票

首先,根据你的问题定义,你有一个多类问题。因此,你应该使用categorical_crossentropy。二进制交叉熵是针对两类问题或多标签分类的。但一般来说,损失函数的值有一个相对的影响值。首先,你要明白cross_entropy是什么意思。其公式为 enter image description here 其中ec是观测值o的正确分类,y是二进制指标(0或1),如果类标签c是观测值o的正确分类,p是o是c类的预测概率,对于二进制交叉熵,M等于2.对于分类交叉熵,M>2.因此,如果预测概率趋近于实际标签,交叉熵就会降低。enter image description here

现在我们以你的例子为例,你有10个班级,你的实际输入是: (0,1,0,0,0,0,0,0,0,0,0).如果你的损失是0. 16,那就意味着: enter image description here这意味着你的模型给正确的标签分配了0.85。因此,损失函数给出了正确分类概率的对数。在keras中,损失是在整个批次上计算的,它是特定批次中整个数据的正确分类概率对数的平均值。如果您使用 evaluate 函数,那么它就是你所评估的整个数据的正确分类概率对数的平均值。

© www.soinside.com 2019 - 2024. All rights reserved.