Neural network Tensorflow DNNClasifier的丢失率很低,但准确率很差

Neural network Tensorflow DNNClasifier的丢失率很低,但准确率很差,neural-network,tensorflow,Neural Network,Tensorflow,我正在使用0.10rc0 Tensorflow的contrib.learn.DNNClassifier学习一个二进制分类问题。损失从最初的数千下降到0.7左右,但准确率和准确率徘徊在50%左右,召回率下降到0.0001。使用另一个优化器,损失降至70%左右,准确率/精确度徘徊在50%左右,召回率在20%左右 问题:在准确性/精确性/召回率仍然很糟糕的情况下,损失怎么可能下降 我可以理解损失函数是否不好,但我使用的是TF的DNNClassifier,因此他们指定了损失函数。我想他们知道他们在那个部

我正在使用0.10rc0 Tensorflow的contrib.learn.DNNClassifier学习一个二进制分类问题。损失从最初的数千下降到0.7左右,但准确率和准确率徘徊在50%左右,召回率下降到0.0001。使用另一个优化器,损失降至70%左右,准确率/精确度徘徊在50%左右,召回率在20%左右

问题:在准确性/精确性/召回率仍然很糟糕的情况下,损失怎么可能下降

我可以理解损失函数是否不好,但我使用的是TF的DNNClassifier,因此他们指定了损失函数。我想他们知道他们在那个部门做什么。以下是一些可能相关的其他事实:

  • 培训数据大小为130万,验证数据大小为30万,每条记录有150个特征
  • 批量为50000
  • 验证集目标列的平均值为0.517,因此数据在类的正(1)和负(0)样本之间非常均匀地分割
  • 培训和验证数据的损失都在0.7左右,因此我认为这不是过度拟合问题,因为它们是相同的(如果该假设无效,请更正我)
以下是最新的验证步骤输出:

INFO:tensorflow:Validation (step 9280): labels/actual_target_mean = 0.517459, labels/prediction_mean = 0.498576, recall/positive_threshold_0.500000_mean = 0.000114476, recall = 0.000114476, auc = 0.499985, precision/positive_threshold_0.500000_mean = 0.487179, precision = 0.487179, loss = 0.721832, accuracy/threshold_0.500000_mean = 0.482538, global_step = 9280, accuracy/baseline_target_mean = 0.517459, accuracy = 0.482538

我错过了什么?

0.7损失并不低,你是否尝试过多个时期的训练,看看损失是否会减少?也许误解是我的问题。我想,既然它从几千降到了0.7,那就太远了。但是,如果0.7的损失不是那么好,我想我的问题仍然是,为什么损失可能会大幅下降,但准确性/精确性/召回率仍然很糟糕?另一个优化有70次丢失,准确度/精密度相似,召回率也更好。这真的是我最大的困惑。解释特定的损耗值取决于使用哪个损耗函数,您使用哪个损耗函数?你也没有回答我关于进一步训练的问题。据我所知,我正在使用TF的DNNClassifier,它使用他们为它设置的任何损失函数。我已经检查了init和fit方法参数,没有看到设置损失函数的地方。至于进一步的培训,很抱歉没有回答这个问题——这些价值观似乎是稳定的。在这两种情况下,高原至少有500-1000个纪元长。