Недавно я изучил LSTM для прогнозирования временных рядов из https://github.com/Hvass-Labs/TensorFlow-Tutorials/blob/master/23_Time-Series-Prediction.ipynb
. В своем уроке он говорит: Вместо того, чтобы обучать Рекуррентную Нейронную Сеть на полных последовательностях почти 300 тыс. Наблюдений, мы будем использовать следующеефункция для создания партии более коротких подпоследовательностей, выбранных случайным образом из обучающих данных.
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_scaled
и y_train_scaled
, а затем начинаем выборку нескольких партий, используя следующую команду batch_generator
?
Моя мотивация для этого вопроса заключается в том, что для прогнозирования временных рядов мы хотим тренировать прошлое и предсказывать будущее.Следовательно, законно ли переносить обучающие образцы?
В учебном пособии автор выбрал фрагмент непрерывных образцов, например
x_batch[i] = x_train_scaled[idx:idx+sequence_length]
y_batch[i] = y_train_scaled[idx:idx+sequence_length]
Можем ли мы выбрать x_batch
и y_batch
не непрерывныйНапример, x_batch[0]
выбран в 10:00am
, а x_batch[1]
выбран в 9:00am
в тот же день?
В итоге: следующие два вопроса
(1) можем ли мы сначала произвольно перенести значения x_train_scaled
и y_train_scaled
, а затем начать выборку нескольких партий, используя следующую команду batch_generator
?
(2) когда мы обучаем LSTM, нужно ли учитывать влияние временного порядка?какие параметры мы узнаем для LSTM.
Спасибо