我正在预测3维的时间序列,并且想知道是否可以配置模型以在Keras中输出martix。
目前,我有3个回归模型,它们一个接一个地训练,一个用于预测每个输出维度。例如,在10个样本的预测范围内,每个模型都输出10x1向量。但是,似乎可以使用单个模型更有效地完成此操作。
谢谢
答案 0 :(得分:0)
我想出了一个非常简单的解决方法。我只是在调整目标时重塑目标,而在预测中就重塑预测。
input_data = input_data.reshape((num_simulations,input_samples*3))
target_data = target_data.reshape((num_simulations,horizon*3))
model.fit(input_data, target_data, validation_split=0.2, epochs=epochs,
batch_size=batch_size, verbose=0, shuffle=True)
prediction = model.predict(input_data, batch_size=batch_size)
prediction = prediction.reshape((num_simulations,horizon,3))
答案 1 :(得分:0)
我发现使用Keras核心层Reshape可以更好地做到这一点。对于按预测变量大小输出的预测范围,请在具有该形状的密集层之后添加一个Reshape层
from keras.layers import Dense, Reshape, Sequential, LSTM
model = Sequential()
model.add(LSTM(100, activation='relu', return_sequences=True, input_shape=(n_steps_in, n_features)))
model.add(LSTM(100, activation='relu'))
model.add(Dense(n_steps_out*n_features))
model.add(Reshape((n_steps_out,n_features)))
model.compile(optimizer='adam', loss='mse')