我正在使用Keras / TF解决以下自回归问题:
输入:
m 示例x 10 个时间步长(序列长度)x 7 个特征
(每个值都是真实值)
输出:
m 示例x 4 个目标/“标签”(我要预测的实际值) < / p>
到目前为止,使用LSTMs 最后是密集层的LSTM(已编辑)。因此,举一个例子,我给出了10个大小为10的序列中的7个特征,而我只想从中得到4个实数值(我正在根据先前的值预测当前值)。
预测之间有什么区别?
a。 1个输出,尺寸为 m x 4
b。 4个输出,每个输出的尺寸为 m x 1
我已经尝试了这两种方法,但没有发现任何特别的区别,但是我想了解它们的作用。在第二种情况下,我知道我可以为要预测的每个变量指定不同的损失和不同的权重,但这似乎不如第一种方法正确。
#python / Keras-TF
#a. multi output
model = Model(inputs = X_input, outputs = [Output1,Output2,Output3,Output4])
prediction = model.predict(X_test_normalized) #returns an inconvenient list of 4 [2 by 1 vectors] which in the end gives me m*4 real values as wanted
###### vs ######
#b. single output
model = Model(inputs = X_input, outputs = [Output1]) #vector of dimension 4
prediction = model.predict(X_test_normalized) #returns a m*4 matrix
答案 0 :(得分:0)
在大多数情况下它没有什么不同。如果输出层是密集层,则每个输出层将具有n * 1权重矩阵。如果您只有一个输出层,则权重的形状将改为n * 4。通常,一个大输出层速度更快,因为一个大矩阵乘法通常快于多个小矩阵乘法。
您也可以加权单个输出层的输出。只需将其乘以输出大小的权重向量,然后再进行损失即可。