什么是Keras中二元交叉熵和带logits的二元交叉熵的区别?

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

如果我提供一个类似的序列作为输入,并包含时间步,我应该使用什么方法让递归LSTM或RNN从这些数据中学习?


回答:

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

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

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

两种选择都是可能的,选择取决于你的网络架构。顺便说一句,如果logit这个术语看起来很吓人,可以看看这个问题,它详细讨论了这个概念。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注