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

Python 3.x 如何一次预测一个数据点,然后使用所有数据更新网络,包括使用LSTM更新最后一个数据点,python-3.x,keras,lstm,Python 3.x,Keras,Lstm,我有27个特征的数据集,1012个训练数据和125个测试数据。 我使用LSTM网络对训练集上的数据进行了训练。但当测试它时,我不希望它一次预测所有125个,因为我在处理时间序列。相反,我希望网络迭代测试数据,一次预测一个点,并以增量方式更新自身。 为此,我编写了以下代码,使用索引对测试数据进行迭代: Predictions = list() for i in range(X): model = load_model('model %s' %i) y_pred =

我有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:检查输入时出错:预期lstm_1_输入为3维,但得到了形状为(4,27)的数组。

TLDR:我如何迭代三维数据,一次提取一个三维数据并将其提供给网络


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

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

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

4是LSTM的时间步长维度?是的,时间步长=4,批量大小=1ok,用这种方式尝试。。。y_pred=model.predict(x_test_t[i][None,:,:,:])我得到了这个错误:ValueError:找到了样本数不一致的输入变量:[125,1]我似乎是在代码的不同部分出错。你的指令绝对正确,我的代码现在可以运行了。非常感谢!4是LSTM的时间步长维度吗?是的,时间步长=4,批量大小=1ok,请这样尝试。。。y_pred=model.predict(x_test_t[i][None,:,:,:])我得到了这个错误:ValueError:找到了样本数不一致的输入变量:[125,1]我似乎是在代码的不同部分出错。你的指令绝对正确,我的代码现在可以运行了。非常感谢!