Итак, я хочу предсказать местоположение агента в среде, закодированной с использованием декартовых координат. Для этого я хочу использовать модель LSTM, но у меня возникают некоторые проблемы с настройкой простой модели, которую я затем могу расширить. Данные, которые я использую, выглядят так:
x0 y0 x1 y1 x2 y2 x5 y5
0 0 5 1 5 1 4 3 3
1 1 5 1 4 2 4 3 2
2 1 4 2 4 2 3 4 2
3 2 4 2 3 3 3 4 1
Где от x0 до y2 - это функции (или X) (с числом, указывающим временной шаг), а x5 и y5 - это прогнозируемые значения (или y ). Итак, сначала я предварительно обработал данные, чтобы они соответствовали модели LSTM, например:
path_df = pd.read_csv("data/preprocessed_data.csv", sep="\t", index_col=0)
X = path_df[["x0", "y0", "x1", "y1", "x2", "y2"]].to_numpy()
y = path_df[["x5", "y5"]].to_numpy()
X = X.reshape(len(X), 3, 2)
y = y.reshape(len(y), 1, 2)
Это дает мне массивы, которые выглядят так:
X[0] =
[[[ 3 1]
[ 3 2]
[ 2 2]]
Y[0] =
[[ 1 4]]
Я думаю, что это правильно отформатировано для использования в модели LSTM (если это не так, скажите мне). Затем я создаю простую модель usig keras, например:
model = Sequential()
model.add(LSTM(4, input_shape=(3, 2)))
model.add(Dense(1))
model.compile(loss="mean_squared_error", optimizer="adam")
model.fit(X, y, epochs=100, verbose=2)
Если я прав, я считаю, что это дало бы мне модель, которая имеет входной слой формы (3,2), что является правильным учитывая исходные данные. И выходной слой, который должен дать мне 1 значение, которое будет предсказанным местоположением. Но когда я запускаю это, я получаю:
ValueError: Error when checking target: expected dense_1 to have 2 dimensions, but got array with shape (2849, 1, 2)
И я не совсем понимаю, откуда это взялось, 2849 - это размер моего набора данных, так что именно отсюда это число, но Я не понимаю, как это исправить. Любая помощь будет оценена!