当预测是小的非零浮动时,Tensorflow Keras的分类精度计算不正确

2024-04-18 22:57:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Tensorflow 1.13.1中使用KerasAPI时遇到了一个奇怪的问题。我的损失是categorical_crossentropy,所以我使用一个热编码向量,我的度量是categorical_accuracy。我刚刚测试了一个包含100个样本的epoch,以验证我的模型的基本执行。有时预测是这样的,一切都按预期进行,我得到了有意义的categorical_accuracy值(忽略预测总是一样的,这是第一个纪元):

TARGET = [1 0], PREDICT = [[0. 1.]]
TARGET = [0 1], PREDICT = [[0. 1.]]
TARGET = [1 0], PREDICT = [[0. 1.]]
TARGET = [0 1], PREDICT = [[0. 1.]]
TARGET = [1 0], PREDICT = [[0. 1.]]
TARGET = [1 0], PREDICT = [[0. 1.]]
TARGET = [0 1], PREDICT = [[0. 1.]]
TARGET = [1 0], PREDICT = [[0. 1.]]
TARGET = [1 0], PREDICT = [[0. 1.]]
TARGET = [0 1], PREDICT = [[0. 1.]]

然而,有时预测是这样的:

TARGET = [0 1], PREDICT = [[1.0000000e+00 1.1421418e-20]]
TARGET = [0 1], PREDICT = [[1.0000000e+00 3.2770412e-19]]
TARGET = [1 0], PREDICT = [[1.000000e+00 8.535294e-32]]
TARGET = [1 0], PREDICT = [[1.000000e+00 6.535944e-20]]
TARGET = [0 1], PREDICT = [[1.000000e+00 5.678613e-20]]
TARGET = [1 0], PREDICT = [[1.000000e+00 4.151403e-23]]
TARGET = [1 0], PREDICT = [[1.0000000e+00 1.7497807e-22]]
TARGET = [0 1], PREDICT = [[1.0000e+00 4.2055e-16]]
TARGET = [0 1], PREDICT = [[1.000000e+00 5.367323e-28]]
TARGET = [1 0], PREDICT = [[1.0000000e+00 2.4306246e-17]]

如果categorical_accuracy总是预测第一个标签的1.0000000e+00(即基本预测[1 0]),则categorical_accuracy值最终为1.0,如果categorical_accuracy值预测所有标签都是第二个标签(即基本预测[0 1]),则categorical_accuracy值等于0.0。你知道吗

这是两次连续运行,没有更改任何代码。是什么导致了这种输出差异,为什么后一种情况会给出categorical_accuracy值的无意义结果?我猜这和小的非零浮点值弄乱了一些东西有关,但我不确定。你知道吗


Tags: target编码度量tensorflow标签向量predict意义