我一直在训练神经网络并使用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上有一个similar question,但这个问题从未得到完全回答。
答案 0 :(得分:0)
如果没有看到机器学习问题,我无法确定问题的确切原因。 请至少提供问题的类型(二进制,多类和/或多标签)
但是,由于准确度和丢失率之间的准确性和差异很大,我认为这是一个错误,而不是机器学习问题。
一个可能的错误可能与加载标签数据y
有关。对于大多数机器学习问题,3%的准确度太低(图像分类除外)。如果您猜测随机超过33个标签,您将获得3%的准确率。
你的问题真的是33级多级分类问题吗?如果没有,那么在创建数据batch_y
时可能会出错(尺寸错误,形状与prediction
不匹配,...)。