Machine learning 神经网络-Softmax交叉熵损失减少对应于精度降低

Machine learning 神经网络-Softmax交叉熵损失减少对应于精度降低,machine-learning,tensorflow,neural-network,softmax,Machine Learning,Tensorflow,Neural Network,Softmax,我一直在训练神经网络并使用Tensorflow。 我的成本函数是: cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y)) 训练我的神经网络使交叉熵损失从约170k减少到约50,这是一个巨大的改进。与此同时,我的准确率实际上变得更差了:从3%到2.9%。这些测试是在训练集上进行的,因此不存在过度拟合的问题 我计算准确度的方法如下: correct = tf.equal

我一直在训练神经网络并使用Tensorflow。 我的成本函数是:

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y))
训练我的神经网络使交叉熵损失从约170k减少到约50,这是一个巨大的改进。与此同时,我的准确率实际上变得更差了:从3%到2.9%。这些测试是在训练集上进行的,因此不存在过度拟合的问题

我计算准确度的方法如下:

correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct, 'float'))
print('Accuracy:', accuracy.eval({x: batch_x, y: batch_y}))
原因可能是什么? 我是否应该使用精度作为成本函数,因为对于我的案例,交叉熵(softmax)显然有问题


我知道StackOverflow上有一个问题,但这个问题从未得到完全回答。

如果没有看到您的机器学习问题,我无法说出问题的确切原因。 请至少提供问题类型(二进制、多类和/或多标签)

但是,由于准确率如此之低,准确率和损失之间的差异很大,我认为这是一个缺陷,而不是一个机器学习问题

一个可能的错误可能与加载标签数据
y
有关。对于大多数机器学习问题(图像分类除外),3%的准确率太低。如果你随机猜出33个标签,你会得到3%的准确率。
你的问题真的是33类分类问题吗?如果没有,您可能在创建数据时出错了(尺寸错误,形状与预测不匹配)。

实际上是的,我的问题是49多类分类问题。我检查了y标签数据,看起来不错。好的,但我仍然认为这是一个bug。在44个多类分类中猜错了所有的标签,我损失了164.37分。您的“~170k损失”有问题您完成了多少次跑步?你只运行了两次吗?如果是这样的话,这可能只是一次糟糕的跑步。你有多少输入功能?你的网络有多大?您是否将sigmoid和/或其他激活功能应用为网络中的最后一个操作?如果需要,请将其删除,因为tensorflow会自动应用softmax。尝试确认其中一些,并给我们一个更新!我也有同样的问题,你解决了吗?我的损失从高到低,但10级分类的准确率仍然在10%左右。好的,在我的例子中,问题与重量初始化有关。当我开始使用
tf.contrib.layers.full_connected
xavier
权重初始化时,问题确实消失了。