У меня есть data(X)
с формой (451, 4, 2, 9), где sample number = 451
, номер серии в time = 4
, height (two series) = 2
, width (each series has features) = 9
. Итак, у меня есть таблица 2 * 9, которая распределена по времени.
Форма y
имеет вид (451, 2, 1).
Мой X имеет вид:
array([[[2182000, 0, 0, 0, 1, 0, 0,
0, 0],
[ 416000, 0, 0, 0, 1, 0, 0,
0, 0]],
[[1724500, 0, 0, 0, 1, 0, 0,
0, 0],
[ 905000, 0, 0, 0, 1, 0, 0,
0, 0]],
[[1818500, 0, 0, 0, 1, 0, 0,
0, 0],
[ 871000, 0, 0, 0, 1, 0, 0,
0, 0]],
[[1473000, 0, 0, 0, 1, 0, 0,
0, 0],
[ 929500, 0, 0, 0, 1, 0, 0,
0, 0]]])
и мой у:
array([[1941500],[1341500]]) #for two parallel series i have two output
Вот модель, которую я хочу обучить:
# define model
model = Sequential()
model.add(LSTM(100, activation='relu', return_sequences=True, input_shape=(n_steps,X.shape[2],X.shape[3])))
model.add(LSTM(100, activation='relu'))
model.add(Dense(X.shape[2],X.shape[3]))
model.compile(optimizer='adam', loss='mse')
# fit model
model.fit(X, y, epochs=400, verbose=0)
# demonstrate prediction
x_input = np.array([
[[1427500, 0, 0, 0, 0, 0, 0, 0, 0],
[ 371000, 0, 0, 0, 0, 0, 0, 0, 0]],
[[1959000, 0, 0, 0, 0, 1, 0, 0, 0],
[ 569000, 0, 0, 0, 0, 1, 0, 0, 0]],
[[2275000, 0, 0, 0, 0, 1, 0, 0, 1],
[ 511500, 0, 0, 0, 0, 1, 0, 0, 1]],
[[4109000, 0, 0, 1, 0, 1, 0, 0, 1],
[1357500, 0, 0, 1, 0, 1, 0, 0, 1]]
])
x_input = x_input.reshape((1, n_steps,X.shape[2],X.shape[3]))
yhat = model.predict(x_input, verbose=0)
print(yhat)
Я хочу знать, как передать массив 4d в качестве входных данных в первом слое LSTM, Я не могу выровнять его, как X.shape [2] * X.shape [3], потому что это два разных временных ряда (каждый с 9 функциями), и я хочу два разных прогноза для обоих временных рядов.