我的代码的相关部分:

模型架构:

Sequential(
    layers=[
        BatchNormalization(input_shape=input_shape),
        LSTM(lstm_1, return_sequences=True, dropout=dropout_1),
        BatchNormalization(),
        LSTM(lstm_2, dropout=dropout_2),
        Dense(1, activation='sigmoid')
    ]
)


编译和拟合调用:

model.compile(loss='binary_crossentropy',
                            optimizer=RMSprop(0.0005),
                            metrics=['accuracy'])

model.fit(np.stack(data_train['spectrogram']), np.stack(data_train['label']),
          batch_size=512,
          epochs=50,
          validation_data=(np.stack(data_test['spectrogram']), np.stack(data_test['label'].values)))


训练时

Epoch 50/50
466/466 [==============================] - 4s 8ms/step - loss: 0.5264 - acc: 0.7425 - val_loss: 0.8254 - val_acc: 0.5339


但是当我这样做

train_preds = np.round(model.predict(np.stack(data_train['spectrogram']))).astype('int32')


train_preds的准确度约为55%,但是,如上所示,最后一个时期的报告准确度为0.7425

难道我做错了什么?还是有一些解释?

如果有帮助,我将乐意发布更多代码。

最佳答案

时期中显示的准确性是您提供的训练数据集上的模型准确性。 model.predict显示验证数据集的准确性。训练数据集的准确性为0.7,测试/验证数据集的准确性为0.55。

关于tensorflow - Keras报告的准确性与model.predict()不对应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53821927/

10-12 23:52