Keras - 验证精度与 LSTM 中的自测精度不匹配?

Posted

技术标签:

【中文标题】Keras - 验证精度与 LSTM 中的自测精度不匹配?【英文标题】:Keras - Validation accuracy not matching self-measured accuracy in LSTM? 【发布时间】:2018-09-24 08:00:34 【问题描述】:

在两个 epoch 之后,我的模型的验证准确度显示为 0.30,但是当我使用 model.predict_generator 返回预测的类并自己测量准确度时 - 准确度要低得多,约为 0.18。

为什么这些方法返回不同的精度?我相信这可能与我对时间序列生成器的实现或理解有关。

data_gen_train = sequence.TimeseriesGenerator(X, y_ct, timesteps, sampling_rate=1, stride=1, start_index=0, end_index=len(y), batch_size=batch_size)
data_gen_test = sequence.TimeseriesGenerator(X_ho, y_ho_ct, timesteps, sampling_rate=1, stride=1, start_index=0, end_index=len(y), batch_size=batch_size)

model = Sequential()
model.add(LSTM(20, stateful=True, batch_input_shape=(batch_size, timesteps, data_dim)))
model.add(Dense(9, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer= 'Nadam', metrics=['accuracy'])
model.fit_generator(data_gen_train, validation_data=data_gen_test, epochs=epochs, shuffle=False, validation_steps= len(y_ho) //batch_size)
y_pred = model.predict_generator(data_gen_test, steps= len(y_ho)//batch_size)

enter image description here

【问题讨论】:

【参考方案1】:

我在上面找到了我的问题的答案。精度测量的差异是由于 pred 和 ground truth 数据集相对于彼此移动。此处应使用 Keras 的 pad_sequences 来避免此问题。

【讨论】:

以上是关于Keras - 验证精度与 LSTM 中的自测精度不匹配?的主要内容,如果未能解决你的问题,请参考以下文章

为啥scikit learn的平均精度分数返回nan?

用 Keras+LSTM+CRF 的实践命名实体识别NER

Keras 交叉验证精度在每个 epoch 后稳定在 (1/output_classes)

Keras猫狗大战五:采用全部数据集训练,精度提高到90%

Keras LSTM:如何预测超越验证与预测?

Keras 神经网络中 val-acc 和预测精度之间的巨大差异