У меня есть тренировочные данные, такие как:
train_x = np.random.randint(1, 20, (5, 4))
train_x
array([[ 4, 19, 5, 4],
[ 5, 2, 2, 8],
[11, 9, 17, 16],
[18, 18, 7, 10],
[ 2, 1, 1, 4]])
train_y = np.random.randint(1, 10, (5, 2))
train_y
array([[2, 7],
[2, 9],
[4, 5],
[7, 8],
[2, 8]])
А также проверочный набор данных, подобный этому:
validation_x = np.random.randint(1, 20, (5, 4))
validation_y = np.random.randint(1, 10, (5, 2))
Для train_x это означает:
Jan Feb Mrch April
project_1 4 19 5 4
project_2 5 2 2 8
project_3 11 9 17 16
project_4 18 18 7 10
project_5 2 1 1 4
Для train_y это означает:
May June
project_1 2 7
project_2 2 9
project_3 4 5
project_4 7 8
project_5 2 8
То есть у меня 5 выборок.Каждая выборка имеет шаг за последние 4 месяца в качестве входных данных и будущие 2 месяца в качестве выходных данных.Но для выходных данных y мне нужно предсказать данные различной продолжительности времени по сравнению с входными данными:
May June
project ? ?
- Я знаю, как создать модель для многих для многих моделей.Например, использовать данные за последние 4 месяца для прогнозирования будущих результатов за 4 месяца.
- Мой вопрос заключается в том, как использовать KERAS для прогнозирования данных будущих месяцев, когда входные месяцы отличаются от выходных месяцев?
Удар - мой неправильный код:
train_x = train_x[:,:,np.newaxis]
train_y = train_y[:,:,np.newaxis]
validation_x = validation_x[:,:,np.newaxis]
validation_y = validation_y[:,:,np.newaxis]
def buildModel(shape):
model = Sequential()
model.add(LSTM(5, input_shape=(shape[1], shape[2]), return_sequences=True))
model.add(TimeDistributed(Dense(1)))
model.compile(loss="mse", optimizer="adam", metrics=['accuracy'])
model.summary()
return model
model = buildModel(train_x.shape)
callback = EarlyStopping(monitor="loss", patience=2, verbose=1, mode="auto")
history = model.fit(train_x, train_y, epochs=2, batch_size=10, validation_data=(validation_x, validation_y), callbacks=[callback])
ValueError: Error when checking target: expected time_distributed_1 to have shape (4, 1) but got array with shape (2, 1)
Спасибо.