Классификация временных рядов переменной длины с использованием 1D CNN в тензорном потоке - PullRequest
0 голосов
/ 25 июня 2019

У меня есть набор данных, состоящий из временных рядов различной длины.Например, рассмотрим это

ts1 = np.random.rand(230, 4)
ts2 = np.random.rand(12309, 4)

У меня есть 200 последовательностей в виде списка массивов

input_x = [ts1, ts2, ..., ts200]

Эти временные ряды имеют метки 1, если хорошо, и 0, если нет.Следовательно, мои метки будут выглядеть примерно так:

labels = [0, 0, 1, 0, 1, ....] 

Я создаю модель keras следующим образом:

model = keras.Sequential([
keras.layers.Conv1D(64, 3, activation='relu', input_shape=(None, 4)),
keras.layers.MaxPool1D(3), 
keras.layers.Conv1D(160, 10, activation='relu'),
keras.layers.GlobalAveragePooling1D(),
keras.layers.Dropout(0.5),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(2, activation='softmax')

])

4 во входной формеПервый слой свертки соответствует количеству столбцов в каждом временном ряду, которое является постоянным (представьте, что у него 4 датчика, возвращающие результаты измерений для различных операций).Цель состоит в том, чтобы классифицировать, является ли временной ряд хорошим или плохим (0 или 1), однако я не могу понять, как тренировать это, используя керасы.

Запуск этой строки

model.fit(input_x, labels, epochs=5, batch_size=1)

Возвращает ошибку

Error when checking model input: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 array(s), but instead got the following list of 200 arrays

Даже использование np.array (input_x) дает ошибку.Как я могу обучить эту модель с последовательностями переменной длины?Я знаю, что выбор - выбор, но это не то, что я ищу.Кроме того, я не хочу использовать RNN со скользящим окном.Я действительно ищу решение с 1D CNN, которое работает с последовательностями переменной длины.Любая помощь будет так цениться!

1 Ответ

0 голосов
/ 26 июня 2019

При работе с временным рядом вы хотите определить вход для NN как (batch_size, sequence_length, features).

Что соответствует input_shape=(sequence_length, 4,) в вашем случае. Вам нужно будет выбрать максимальную длину последовательности, которую вы будете обрабатывать в целях обучения и генерации прогнозов.

Входные данные для NN также должны быть в форме (batch_size, sequence_length, features).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...