machine-learning - 神经网络-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(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)显然有问题。

我知道有一个similar question在 StackOverflow 上找到了这个问题,但问题从未得到完全解答。

最佳答案

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

但是,由于准确率如此之低,而且准确率和损失之间存在巨大差异,我认为这是一个错误,而不是机器学习问题。

一个可能的错误可能与加载标签数据y有关。对于大多数机器学习问题(图像分类除外)来说,3% 的准确率太低。如果您随机猜测超过 33 个标签,您将获得 3% 的准确率。 你的问题真的是33多类分类问题吗?如果没有,您在创建数据 batch_y 时可能做错了什么(维度错误、形状与预测不匹配,...)。

关于machine-learning - 神经网络-Softmax交叉熵损失减少对应准确率下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45180109/

相关文章:

machine-learning - 奇怪的验证损失和准确性

artificial-intelligence - Q-Learning 与神经网络相结合(有益的理解)

R 中用于超大型数据集处理和机器学习的推荐包

python - 预处理、重采样和管道 - 以及两者之间的错误

Tensorflow:跟踪张量所取的值

python - Pycharm 和 tensorflow GPU;未找到 DLL

python-3.x - 计算神经网络的梯度

python - Keras 是如何计算准确率的?

r - 如何减少 SVM 的执行时间

Python 的 XGBRegressor 与 R 的 XGBoost