Я хочу предсказать временной ряд X1 из n точек на основе двух разных временных рядов X2 и X3, также из n точек каждый. Эти временные ряды взаимодействуют, поэтому я надеялся использовать те же методы, что и при объединении изображений для получения другого изображения.
До сих пор я успешно реализовал авто-кодер для обучения и возврата всех временных рядов (X1, X2, X3). Когда я попытался настроить нейронную сеть для использования X2 и X3 только для прогнозирования X1 (из 3000 единиц), модель не компилируется, и я получаю сообщение об ошибке:
Error when checking target: expected sequential_9 to have 2 dimensions, but got array with shape (61, 3000, 1, 1)
В разных комбинациях он ломаетсяна flatten_x
или dense_x
. Это работает, если мой вывод имеет только одну единицу, а не 3000.
Сеть, которую я пробовал, имела бы следующие слои:
Layer (type) Output Shape Param #
=================================================================
input_8 (InputLayer) (None, 3000, 2, 1) 0
_________________________________________________________________
conv2d_10 (Conv2D) (None, 3000, 2, 32) 96
_________________________________________________________________
max_pooling2d_7 (MaxPooling2 (None, 1500, 2, 32) 0
_________________________________________________________________
flatten_7 (Flatten) (None, 96000) 0
_________________________________________________________________
dense_6 (Dense) (None, 3000, 1, 32)
Вот код, которыйЯ использую для создания сети:
network = Sequential((
Conv2D(filters=32, kernel_size=(1,2), activation='relu', input_shape=(x, y, inChannel)),
MaxPooling2D(pool_size = (2, 1)),
Flatten(),
Dense(3000, activation='relu'),
))
network.compile(loss='mean_squared_error', optimizer = RMSprop())
Вход имеет форму (61, 3000, 2, 1).
Должен ли я где-то указать ожидаемые входы / выходыа я этим не занимаюсь? Сделать некоторые преобразования данных на пути? Может быть, использовать другую архитектуру?
Спасибо за все предложения!