У меня есть набор данных, состоящий из временных рядов различной длины.Например, рассмотрим это
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, которое работает с последовательностями переменной длины.Любая помощь будет так цениться!