Предварительная обработка данных RNN - создание функций и целей в 3D Tensor - PullRequest
0 голосов
/ 09 октября 2019

Я работал над настройкой своих функций и целей для входа LSTM. Мне известен типичный метод использования скользящего окна в цикле for для выполнения этой задачи. Я попробовал другой подход, который имеет смысл для меня, но я не видел ни одного другого подхода, который заставляет меня беспокоиться, что я могу делать что-то не так.

У меня есть 350 000 выборок, и я хочу сгенерировать объекты и цели для временных интервалов 1000. У меня 32 объекта, поэтому 2D-форма равна (350000,32). Преобразование в трехмерный тензор с 350 временными шагами приводит к форме 1000,350,32. Теперь я хочу установить свою цель как прогнозирующую следующие 11 временных шагов следующего пакета. Я бы сделал это, указав мои функции и цели следующим образом:

data[:-1,:,:] и data[1:,:11,-7:], где мои 7 целей - это последние 7 столбцов моих данных.

Вот почему я думаю, что это работает: мои данные уже находятся в 3D-форме ввода, и мое определение целевого набора данных должно соответствовать следующим 11 timesteps данным, которые в моем 3D-тензореследующие 11 записей следующие batch.

Полный пример кода с моими гипотетическими данными о поездах и тестах:

train = data[:250000] # len(data) = 350000
test = data[250000:] 

timesteps = 250
trainre = train.reshape(int(train.shape[0]/timesteps),timesteps,train.shape[1])
testre = test.reshape(int(test.shape[0]/timesteps),timesteps,test.shape[1])
print(trainre.shape)
print(testre.shape)

(1000, 250, 32)
(400, 250, 32)

trainx = trainre[:-1,:,:] #features
trainy = trainre[1:,:11,-7:] #predictions for 7 targets

Опять же, я не видел этот метод раньше, поэтому я волнуюсь, что что-то упустил.

...