gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:29:10 24 4
gpt4 key购买 nike

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

在他的教程中,他说:我们将使用以下函数创建一批从训练数据中随机选取的较短子序列,而不是在近 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)

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

我的问题是,我们可以先随机穿梭 x_train_scaled吗?和 y_train_scaled ,然后使用以下 batch_generator 开始对多个批次大小进行采样?

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

在教程中,作者选择了一段连续的样本如
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:00am 被选中和 x_batch[1]9:00am 被选中在同一天?

总结:以下两个问题是

(1) 我们可以先随机穿梭 x_train_scaled吗?和 y_train_scaled ,然后使用以下 batch_generator 开始对多个批次大小进行采样?

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

谢谢

最佳答案

(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/

The train/test data must be split in such a way as to respect the temporal ordering and the model is never trained on data from the future and only tested on data from the future.

关于python-3.x - 如何在 Tensorflow 中拆分 LSTM 的训练数据和测试数据以进行时间序列预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54929180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com