在一个类似的问题之后,我遇到了一个问题,我需要在 3 个不同的时间序列之前预测许多步骤。我设法生成了一个网络,将 3 个时间序列的过去 7 个值作为输入,预测其中一个的 5 个未来值。输入x
具有以下维度:
(500, 7, 3): 500 samples, 7 past time steps, 3 variables/time series)
目标y
具有以下维度:
(500, 5): 500 samples, 5 future time steps
LSTM 网络定义为:
model = Sequential()
model.add(LSTM(input_dim=3, output_dim=10, return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(50))
model.add(Dropout(0.2))
model.add(Dense(input_dim=10, output_dim=7))
model.add(Activation('linear'))
model.compile(loss='mae', optimizer='adam')
如果现在我想预测 2 个时间序列的值怎么办?
我尝试了以下代码:
inputs = Input(shape=(7,3)) # 7 past steps and variables
m = Dense(64,activation='linear')(inputs)
m = Dense(64,activation='linear')(m)
outputA = Dense(1,activation='linear')(m)
outputB = Dense(1,activation='linear')(m)
m = Model(inputs=[inputs], outputs=[outputA, outputB])
m.compile(optimizer='adam', loss='mae')
m.fit(x,[y1,y2])
其中y1
和具有与(500, 5)y2
相同的尺寸。y
但我收到以下错误:
"Error when checking target: expected dense_4 to have 3 dimensions, but got array with shape (500, 5)".
我应该如何重塑y1
和y2
?还是我应该为网络设置不同的结构?