二进制交叉熵和二进制交叉熵与keras中的logits有什么区别?

时间:2017-10-01 04:53:43

标签: python machine-learning keras lstm rnn

在keras后端,我们在K.binary_crossentropy中有一个标记with_logits。普通二进制交叉熵和二进制交叉熵与logits有什么区别?假设我使用的是seq2seq模型,输出序列的类型为100111100011101

我应该使用什么来递归LSTM或RNN来学习这些数据,前提是我在输入中给出了类似的序列以及时间步长?

1 个答案:

答案 0 :(得分:1)

这取决于你是否在丢失函数之前有一个sigmoid层。

如果存在sigmoid层,它会将类得分压缩为概率,在这种情况下from_logits应为False。损失函数会将概率转换为 logits ,因为这是tf.nn.sigmoid_cross_entropy_with_logits所期望的。

如果输出已经是logit(即原始分数),则传递from_logits=True,不会进行任何转换。

两种选择都是可能的,选择取决于您的网络架构。顺便说一句,如果术语 logit 看起来很可怕,请查看this question,详细讨论它。