Я пытаюсь построить модель, которая прогнозирует цену определенного товара на основе текущих рыночных условий, мои данные имеют форму, аналогичную
num_samples = 100
sample_dimension = 10
XXX = np.random.random((num_samples,sample_dimension)).reshape(-1,1,sample_dimension)
YYY = np.random.random(num_samples).reshape(-1,1)
, поэтому у меня есть 100 заказанных образцов Xданные, каждая из которых состоит из 10 переменных. Моя модель выглядит следующим образом
model = keras.Sequential()
model.add(tf.keras.layers.Conv1D(4,
kernel_size = (2),
activation='sigmoid',
input_shape=(None, sample_dimension),
batch_input_shape = [1,1,sample_dimension]))
model.add(tf.keras.layers.AveragePooling1D(pool_size=2))
model.add(tf.keras.layers.Reshape((1, sample_dimension)))
model.add(tf.keras.layers.LSTM(100,
stateful = True,
return_sequences=False,
activation='sigmoid'))
model.add(keras.layers.Dense(1))
model.compile(optimizer='adam',
loss='mean_squared_error',
metrics=['accuracy'])
, так что это 1-мерная свертка, объединение, изменение формы (так что она хорошо работает с lstm), а затем приведение к прогнозу
, но когдаЯ пытаюсь запустить его, я получаю следующую ошибку
Размер отрицательного измерения, вызванный вычитанием 2 из 1 для 'conv1d / conv1d' (op: 'Conv2D') с входными формами: [1,1, 1,10], [1,2,10,4].
Я пробовал несколько разных значений для размера ядра, размера пула и batch_input_shape (приходится пакетировать мои входные данные, потому чтомои фактические данные распределены по нескольким большим файлам, поэтому я хочу читать по одному и пнуть их для обучения модели), но, похоже, ничего не работает.
Что я делаю не так? Как я могу отслеживать / прогнозировать форму моих данных при прохождении через эту модель? Как должны выглядеть данные / переменные?