如何在 Tensorflow 中拆分 LSTM 的训练数据和测试数据以进行时间序列预测

杰森

我最近从https://github.com/Hvass-Labs/TensorFlow-Tutorials/blob/master/23_Time-Series-Prediction.ipynb学习了用于时间序列预测的 LSTM

在他的教程中,他说:我们将使用以下函数创建一批从训练数据中随机选取的较短子序列,而不是在近 30 万个观察的完整序列上训练循环神经网络。

def batch_generator(batch_size, sequence_length):
"""
Generator function for creating random batches of training-data.
"""

# Infinite loop.
while True:
    # Allocate a new array for the batch of input-signals.
    x_shape = (batch_size, sequence_length, num_x_signals)
    x_batch = np.zeros(shape=x_shape, dtype=np.float16)

    # Allocate a new array for the batch of output-signals.
    y_shape = (batch_size, sequence_length, num_y_signals)
    y_batch = np.zeros(shape=y_shape, dtype=np.float16)

    # Fill the batch with random sequences of data.
    for i in range(batch_size):
        # Get a random start-index.
        # This points somewhere into the training-data.
        idx = np.random.randint(num_train - sequence_length)

        # Copy the sequences of data starting at this index.
        x_batch[i] = x_train_scaled[idx:idx+sequence_length]
        y_batch[i] = y_train_scaled[idx:idx+sequence_length]

    yield (x_batch, y_batch)

他尝试创建几个用于训练的浴室样本。

我的问题是,我们可以先随机穿梭x_train_scaledy_train_scaled,然后开始使用 follow 对几个批量大小进行采样batch_generator吗?

我提出这个问题的动机是,对于时间序列预测,我们希望训练过去并预测未来。因此,穿梭训练样本是否合法?

在教程中,作者选择了一段连续的样本如

x_batch[i] = x_train_scaled[idx:idx+sequence_length]
y_batch[i] = y_train_scaled[idx:idx+sequence_length]

我们可以选择x_batchy_batch不是连续的。例如,取件x_batch[0]时间10:00amx_batch[1]取件9:00am时间是同一天?

总结:以下两个问题是

(1) 我们可以先随机穿梭x_train_scaledy_train_scaled,然后使用以下开始采样几个批量大小batch_generator吗?

(2)我们训练LSTM的时候,需要考虑时间顺序的影响吗?我们为 LSTM 学习了哪些参数。

谢谢

1b15

(1) 我们不能。想象一下,试图预测明天的天气。您想要过去 10 小时的一系列温度值,还是想要过去 5 年的随机温度值?

您的数据集是以 1 小时为间隔的一长串值。您的 LSTM 接收一系列按时间顺序连接的样本例如,sequence_length = 10它可以将 2018-03-01 09:00:00 到 2018-03-01 19:00:00 的数据作为输入。如果您在生成包含这些序列的批次之前对数据集进行混洗,您将根据整个数据集中的随机样本序列训练 LSTM 进行预测。


(2) 是的,我们需要考虑时间序列的时间排序。您可以在这里找到在 python 中测试时间序列 LSTM 的方法:https : //machinelearningmastery.com/backtest-machine-learning-models-time-series-forecasting/

训练/测试数据必须以尊重时间顺序的方式进行分割,并且模型永远不会在未来的数据上进行训练,而只在未来的数据上进行测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Keras LSTM预测中为多变量输入和相关系列问题塑造测试数据

如何在Tensorflow CNN中拆分自己的数据集进行训练和验证

如何在tensorflow.js中训练LSTM对垃圾邮件进行分类?

TensorFlow-如何在不同的测试数据集上使用经过训练的模型进行预测?

如何进行训练测试拆分,以便在Python中每个类都有足够的训练和测试数据?

如何在tensorflow.js中构建和训练lstm网络

如何使用时间序列数据训练和预测Keras LSTM?

如何在 Tensorflow 中更改 LSTM 单元中的激活函数

如何在python中建立LSTM时间序列预测模型?

Tensorflow数据集/迭代器,用于使用CNN中的训练和测试数据进行评估

如何在Tensorflow中获得LSTM的密集层输出?

如何在TensorFlow中创建端执行基本LSTM网络?

如何分割训练和测试数据-Tensorflow上的Keras

如何在python中通过LSTM获得新数据的预测

如何使用LSTM单元训练RNN以进行时间序列预测

Keras LSTM如何在多元设置中对多个时间序列进行预测?

如何在tensorflow中结合数字数据和图像数据进行训练?

使用tensorflow_datasets.load(TF 2.1)拆分训练数据以进行训练和验证

Tensorflow.js LSTM时间序列预测

如何在Spring中以编程方式填充测试数据以进行集成测试?

如何准备存储在zip文件中的图像数据以在Tensorflow 2中进行训练?

如何在Keras中向LSTM输入多个时间序列

如何使用 Keras 和 Tensorflow 在 Python 中的 LSTM 网络中获得多个输出?

Tensorflow中相同的训练数据和测试数据,神经网络的输出值不同

如何按年份创建时间序列数据的训练/测试拆分?

如何在Keras的多元LSTM中处理多步时间序列预测

在Tensorflow中读取大型训练/验证/测试数据集

如何在Keras / TensorFlow中可视化RNN / LSTM权重?

如何在Keras / TensorFlow中可视化RNN / LSTM梯度?