#python #tensorflow #time-series #data-preprocessing
#питон #тензорный поток #временные ряды #предварительная обработка данных
Вопрос:
Мне приходится обрабатывать огромное количество образцов, где каждый образец содержит уникальные временные ряды. Цель состоит в том, чтобы ввести эти данные в модель Tensorflow LSTM и спрогнозировать некоторые функции. Я создал функцию tf timeseries_dataset_from_array
генератора для передачи данных в модель TF, но я не понял, как создать функцию генератора, когда у меня есть несколько образцов. Если я использую обычный конвейер, tf timeseries_dataset_from_array
перекрывайте временные ряды двух отдельных выборок.
У кого-нибудь есть идея, как эффективно передать временной ряд из нескольких выборок в модель TF?
Например, Набор данных распознавания человеческой деятельности является одним из таких наборов данных, в котором у каждого человека есть отдельный длинный временной ряд, и временные ряды каждого пользователя могут быть дополнительно проанализированы с помощью функции, подобной СКОЛЬЗЯЩЕМУ/СКОЛЬЗЯЩЕМУ WINDOS. timeseries_dataset_from_array
Вот более простой пример:
Я хочу использовать timeseries_dataset_from_array
для создания образцов для модели TF. Пример: пример 1, где столбец 0 содержит 0, пример 2 начинается с столбца 0, содержащего 100. Вот более простой пример:
Я хочу получить 3D-данные (образцы, временные интервалы, объекты) без перекрытия.Например (6,2,7), Как это:
Делает
Вот пример кода:
from tensorflow.keras.preprocessing import timeseries_dataset_from_array import numpy as np x = np.array([[0,1,2,3,4,5,6], [0,11,12,13,14,15,16], [0,21,22,23,24,25,26], [0,31,32,33,34,35,36], [0,41,42,43,44,45,46] ]) xx = np.concatenate((x, x 100), axis=0)#.reshape(2,5,6) sequence_length=2 stride=1 rate=1 input_dataset = timeseries_dataset_from_array(xx, None, sequence_length, sequence_stride=stride, sampling_rate=rate) x_test = np.concatenate([x for x in input_dataset], axis=0)
Ответ №1:
Я нашел решение, которое позволяет избежать проблемы перекрытия
### solution ###### # reshape the dataset xxx = xx.reshape(2,5,7) # create two tensorflow datasets input_dataset0 = timeseries_dataset_from_array(xxx[0,:,:], None, sequence_length, sequence_stride=stride, sampling_rate=rate) input_dataset1 = timeseries_dataset_from_array(xxx[1,:,:], None, sequence_length, sequence_stride=stride, sampling_rate=rate) # concatenate the two tensorflow datasets input_dataset = input_dataset0.concatenate(input_dataset1) x_test = np.concatenate([x for x in input_dataset], axis=0)