如何在tensorflow,DNNLinearCombinedClassifier中使用不同的损失函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在tensorflow,DNNLinearCombinedClassifier中使用不同的损失函数相关的知识,希望对你有一定的参考价值。

我使用谷歌tensorflow TensorFlow Wide & Deep Learning来预测点击率。该代码基于wide_n_deep_tutorial.py

但是,auc很糟糕。我检查了代码并发现,在DNN Linear Combined.by中,损失函数被定义为

loss = math_ops.reduce_mean(loss_unweighted, name=name)

在CTR预测中,列车数据不平衡。因此,如果使用这种损失函数,当在负面类(多数类)中预测更多样本时,损失将更好。

更重要的是,CTR的预测远远大于真正的点击率。 (真正的点击率低于1%,平均预测点击率约为30%。)

我的问题是:如何修改代码以使用logloss? TF提供这个吗?我检查了代码,发现了以下内容:

  1. 函数math_ops.reduce_logsumexp在tensorflow / python / ops / math_ops.py中
  2. 函数_log_loss_with_two_classes in tensorflow / contrib / learn / python / learn / estimators / head.py

但是,第一个没有改变与math_ops.reduce_sum。我不知道如何使用第二个功能。

总之,我的问题可以概括为:如何修改代码以使用logloss函数。

谢谢。

答案

如果您只想计算logloss,并且给出了损失,那么您可以按如下方式计算logloss,而无需更改代码:

log_loss = math_ops.log(loss)

以上是关于如何在tensorflow,DNNLinearCombinedClassifier中使用不同的损失函数的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow如何入门?

如何在单核上运行 Tensorflow?

如何在 Google 云中设置 TensorFlow?

如何在 CPU 上运行 TensorFlow

tensorflow 如何在线训练模型

如何在 tensorflow 中克隆 git 存储库 [重复]