我的代码的相关部分:
模型架构:
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/