【问题标题】:How to use different loss function in tensorflow, DNNLinearCombinedClassifier如何在张量流中使用不同的损失函数,DNNLinearCombinedClassifier
【发布时间】:2017-03-07 11:01:46
【问题描述】:

我正在使用 google tensorflow TensorFlow Wide & Deep Learning 来预测点击率。 代码基于wide_n_deep_tutorial.py

但是,auc 很糟糕。我检查了代码,发现在 DNN_Linear_Combined.py 中,损失函数定义为

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

在 CTR 预测中,训练数据不平衡。所以如果使用这种损失函数,当预测更多的负类(多数类)样本时,损失会更好。

此外,预测的点击率远高于真实点击率。 (真实点击率小于1%,平均预测点击率在30%左右。)

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

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

但是,第一个不会对math_ops.reduce_sum 进行更改。而且我不知道如何使用第二个功能。

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

谢谢。

【问题讨论】:

  • 你训练要解决的任务是什么?你的数据集是什么?请澄清这些方面。

标签: tensorflow deep-learning


【解决方案1】:

如果你只是想计算logloss,并且给出了loss,那么你可以如下计算logloss,你不需要改变代码:

log_loss = math_ops.log(loss)

【讨论】:

  • 谢谢,但你能提供更多细节吗?我的目的不是计算logloss,而是用logloss函数作为目标函数来训练模型。在 estimator/head.py 中,loss, weighted_average_loss = _loss( parametors)。那么我应该使用哪个函数来获取对数损失?谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-10-15
  • 2021-11-20
  • 2017-09-02
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
  • 2018-09-18
  • 1970-01-01
相关资源
最近更新 更多