Tensorflow Keras报告的准确度不';t与model.predict()对应
我的代码的相关部分:Tensorflow Keras报告的准确度不';t与model.predict()对应,tensorflow,machine-learning,keras,deep-learning,Tensorflow,Machine Learning,Keras,Deep Learning,我的代码的相关部分: model.compile(loss='binary_crossentropy', optimizer=RMSprop(0.0005), metrics=['accuracy']) model.fit(np.stack(data_train['spectrogram']), np.stack(data_train['label']), bat
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)))
模型架构:
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')
列车pred的准确率约为55%,但如上所示,上一历元的报告准确率为0.7425
我做错什么了吗?还是有什么解释
如果有帮助的话,我很乐意发布更多的代码。在年代中显示的准确性是您提供的训练数据集上模型的准确性。
model.predict
显示验证数据集的准确性。0.7的准确度在训练数据集上而0.55的准确度在测试/验证数据集上你的74%在训练集上,这是你自己在训练时执行算法的一个指标,你永远不要把它当作参考
您应该始终查看测试集,这才是真正重要的值
此外,您的准确度应始终如下所示(至少是样式):
e、 g.训练集的准确性始终在增长,测试集遵循相同的趋势,但低于训练曲线
当训练准确度/损失较高,而开发/测试准确度/损失较低时,它明显发出一个过度拟合的信号。如果绘制训练和测试数据的精度图,可能与下图类似: 在绘图的某个点上,训练精度会降低,但测试精度不会降低。可以做些什么
线索:根据您的代码,您有两个LSTM和466培训示例。LSTM模型是一个相对强大的网络,很容易在数据上过度拟合。减少LSTM的隐藏层大小或删除其中一个可能是避免过度拟合的良好起点。有时55%的精度太高。解释一下问题出在哪里,线索是什么,你的猜测是什么。问题是Keras说训练准确度是0.7425,而model.predict显示55%。你需要告诉我们你的模型代码和编译调用,任何答案都是有意义的。我已经添加了模型和编译代码。你必须提供上下文,输入是什么?您试图预测什么?如问题中所述,我是
model.predict
ing火车数据集本身。因此,精度应该是相同的。