如何一次预测一个数据点,然后使用所有数据更新网络,包括使用 LSTM 的最后一个数据



我有一个包含 27 个特征、1012 个训练数据和 125 个测试的数据集。 使用LSTM网络,我在训练集上训练了数据。但是在测试它时,我不希望它一次预测所有 125 个,因为我正在使用时间序列。相反,我希望网络遍历测试数据,一次预测一个点并逐步更新自身。 为此,我编写了以下代码,该代码使用索引遍历测试数据:

Predictions = list()
for i in range(X):
model = load_model('model %s' %i)
y_pred = model.predict(x_test_t[i], batch_size=BATCH_SIZE)
y_pred = y_pred.flatten()
# Descaling the Predicted Values
Dynamic_Trainer.pred = (y_pred * min_max_scaler.data_range_[3]) + min_max_scaler.data_min_[3]
Dynamic_Trainer.test = (y_test_tt * min_max_scaler.data_range_[3]) + min_max_scaler.data_min_[3]
#Saving the model for each new data point predicted and added to training
u = i+1
model = model.save(Output_path + Model %d'%u)
# Saving each new prediction (Dynamic_Trainer is the function i made of the LSTM)
Predictions.append(Dynamic_Trainer.pred)

但是我收到此错误: ValueError: Error when checking input: expected lstm_1_input to have 3 dimensions, but got array with shape (4, 27)

TLDR:如何迭代三维数据,一次提取一个三维数据并将其馈送到网络。

编辑:如果有更有效的方法来实现相同的目标,我愿意接受建议。

感谢 @Marco Cerliani 为任何有相同问题的人找到的解决方案是只使用: y_pred = model.predict(x_test_t[i][None,:,:]( 对于循环。

最新更新