我尝试逐步了解Keras和LSTM。现在我建立一个LSTM,输入是一个句子,输出是五个值的数组,每个值可以是0或1。
示例: 输入句子:“我讨厌cookie” 输出示例:[0,0,1,0,1]
为此,我正在使用keras库。
现在我不确定应该使用哪种损失函数。现在,我只知道两个预定义的损失函数要好一些,而两个函数似乎都不适合我的示例:
二进制交叉熵:如果我的输出仅为0或1,则很好 分类交叉熵:如果我有一个输出为1且所有其他值为0的数组,则很好。
对于我的示例,这两个函数都没有任何意义。您将使用什么以及为什么?
另一个问题:您将在Keras中使用哪种激活功能?
答案 0 :(得分:1)
关于交叉熵的入门知识是,交叉熵损失或对数损失可衡量分类模型的性能,该模型的输出为0到1之间的概率值。
随着预测概率与实际标记的偏离,交叉熵损失增加。因此,当实际观察标签为1时预测0.01的概率将很糟糕,并导致高损失值。理想模型的对数损失为0。对于LSTM模型,您可能需要或可能不需要此损失函数。这是link来回答您的问题的详细信息。
答案 1 :(得分:0)
This链接应使您了解交叉熵的作用以及何时使用它。激活功能是在实验基础上使用的。 keras中有很多激活功能,您可以根据自己的情况进行尝试。
请务必参考youtube上的this Stanford video和this blog,它们都将为您提供有关如何选择损失函数的基本知识。
祝你好运!
答案 2 :(得分:0)
您将要使用logistic
激活。这会将每个logit推到0到1之间,代表该类别的概率。
然后使用categorical cross entropy
。因为您使用的是逻辑激活而不是softmax激活,所以这不会使您的模型成为单个类分类器。
根据经验:
答案 3 :(得分:0)
我自己发现了一个非常好的链接,解释说最好的方法是使用“ binary_crossentropy”。
原因是数组中的每个值都可以为0或1。所以我们有一个二进制问题。
我也尝试过。使用我的数据集,利用二进制交叉熵,我能够获得92%的精度。有了分类交叉熵,我的准确率只有81%。
我忘记添加链接。对于多种输入/输出模型以及要使用的损失函数的很好的解释: