categorical_accuracy值是什么意思? categorical_accuracy 100%,但数据显示错误的预测

时间:2019-07-11 08:33:30

标签: python keras lstm multiclass-classification

在训练中,Keras categorical_accuracy值为100%。但是,与我保存的训练数据一样,这些数据也输出到文件中,其中显示了一些(实际上是很多)分类为错误类的数据。我已经检查了输入文件的标签,这是正确的文件。

categorical_accuracy可以测量什么?有没有更好的度量标准来调试LSTM?

model = Sequential()
model.add(LSTM(64, batch_input_shape=(7763, TimeStep.TIME_STEP + 1, 10), return_sequences=True, activation='relu'))
model.add(LSTM(128, activation='relu', return_sequences=True))
model.add(LSTM(64, activation='relu', return_sequences=True))
model.add(LSTM(32, activation='relu'))
model.add(Dense(3, activation='softmax'))

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=[categorical_accuracy])
history = model.fit(TimeStep.fodder, TimeStep.target, epochs=300, batch_size=7763)





Epoch 400/400

 7763/31052 [======>.......................] - ETA: 1s - loss: 2.7971e-04 - categorical_accuracy: 1.0000
15526/31052 [==============>...............] - ETA: 1s - loss: 3.0596e-04 - categorical_accuracy: 1.0000
23289/31052 [=====================>........] - ETA: 0s - loss: 3.0003e-04 - categorical_accuracy: 1.0000
31052/31052 [==============================] - 2s 78us/step - loss: 2.9869e-04 - categorical_accuracy: 1.0000

1 个答案:

答案 0 :(得分:0)

keras github repo中,我们具有categorical_accuracy功能。

def categorical_accuracy(y_true, y_pred):
    return K.cast(K.equal(K.argmax(y_true, axis=-1),
                          K.argmax(y_pred, axis=-1)),
                  K.floatx())

在这里我们可以看到,如果y_true的最大值的位置与y_pred相同,则返回1,否则返回0。100%的精度应表明y_true的最大值的位置始终与y_pred相同(这里的位置是班级,因此请始终预测同一班级。)

一个可能的原因可能是您只有一个输出(单个二进制类)。因此,y_true和y_pred的最大值位置始终为0。

在这种情况下,请使用binary_accuracy