Tensorflow Time Series Tutorial Функция разделения игнорирует последнее значение - PullRequest
0 голосов
/ 06 мая 2020

Привет, сообщество: я пытаюсь научиться использовать Tensorflow, и я следил за учебным курсом с сайта Tensorflow . Если вы перейдете по ссылке, то увидите, что это руководство по временным рядам для одношагового и многошагового прогнозирования. Перед подачей данных для обучения модели необходимо создать функцию разделения. Функция multivariate_data() для многоэтапного прогнозирования разделяет данные на обучающий и проверочный наборы. При проверке выходных данных я вижу, что массив проверки имеет количество предсказанных шагов, которое включает последние n шагов в наборе данных, где n - любые шаги в будущем, которые вы хотите предсказать. Что меня смущает, так это то, почему выходные данные набора проверки не включают последнее значение (шаг) набора данных? Если вы будете следовать руководству, вы увидите, что последнее значение в массиве y_val_multi является предпоследним значением в dataset.

Я прилагаю этот пример кода, в котором используется список всего из 20 элементы для упрощения моего запроса:

import numpy as np

sample_df = np.array([*range(20)])

def prepare_data(dataset, target, start_index, end_index, history_size,
                  target_size, step, single_step=False):
    data = []
    labels = []

start_index = start_index + history_size
if end_index is None:
    end_index = len(dataset) - target_size

for i in range(start_index, end_index):
    indices = range(i-history_size, i)
    data.append(np.reshape(dataset[indices], (history_size, 1))) #If data is multivariate, no need to reshape

    if single_step:
        labels.append(target[i+target_size])
    else:
        labels.append(target[i:i+target_size])

return np.array(data), np.array(labels)


TRAIN_SPLIT = 10 
past_history = 4
future_target = 2
STEP = 0

x_train, y_train = prepare_data(sample_df, sample_df, 0,
                                               TRAIN_SPLIT, past_history,
                                               future_target, STEP,
                                               single_step=False)
x_val, y_val = prepare_data(sample_df, sample_df,
                                           TRAIN_SPLIT, None, past_history,
                                           future_target, STEP,
                                           single_step=False)

Если вы распечатаете вывод y_val, вы получите:

array([[14, 15],
   [15, 16],
   [16, 17],
   [17, 18]])

Переменная y_val должна иметь 2 последних значения для каждого x_val и последнее значение должно быть [18,19], и вы можете легко исправить функцию, чтобы получить его, но мой вопрос: почему последнее значение не включено? Это ошибка или есть причина не обращать на это внимания? Пожалуйста, и спасибо за любую предоставленную помощь.

...