可以将神经网络配置为在Keras中输出矩阵吗?

时间:2019-04-23 20:34:07

标签: python tensorflow keras neural-network

我正在预测3维的时间序列,并且想知道是否可以配置模型以在Keras中输出martix。

目前,我有3个回归模型,它们一个接一个地训练,一个用于预测每个输出维度。例如,在10个样本的预测范围内,每个模型都输出10x1向量。但是,似乎可以使用单个模型更有效地完成此操作。

谢谢

2 个答案:

答案 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')