关于具有多个输出的keras回归的问题:
你能否解释一下这个网之间的区别:
两个输入 - >两个输出
input = Input(shape=(2,), name='bla')
hidden = Dense(hidden, activation='tanh', name='bla')(input)
output = Dense(2, activation='tanh', name='bla')(hidden)
和:两个单输入 - >两个单一输出:
input = Input(shape=(2,), name='speed_input')
hidden = Dense(hidden_dim, activation='tanh', name='hidden')(input)
output = Dense(1, activation='tanh', name='bla')(hidden)
input_2 = Input(shape=(1,), name='angle_input')
hidden_2 = Dense(hidden_dim, activation='tanh', name='hidden')(input_2)
output_2 = Dense(1, activation='tanh', name='bla')(hidden_2)
model = Model(inputs=[speed_input, angle_input], outputs=[speed_output, angle_output])
他们表现得非常相似。其他当我完全分开它们时,那两个网的行为就像它们应该的那样。
两个单输出网络比具有两个输出的更大网络表现得更容易理解这是正常的,我并不认为差异可能像我所经历的那样巨大。
非常感谢:)
答案 0 :(得分:2)
这可以追溯到神经网络的运作方式。在你的第一个模型中,每个隐藏的神经元接收2个输入值(因为它是'密集'层,输入传播到每个神经元)。在您的第二个模型中,您拥有两倍的神经元,但每个神经元只接收speed_input
或angle_input
,并且只能使用该数据而不是整个数据。
因此,如果speed_input
和angle_input
是2个完全不相关的属性,那么分割2个模型可能会看到更好的性能,因为神经元没有接收基本上是噪声的输入(它们不是我们知道你的输出对应于你的输入,他们只能尝试优化你的输出功能。基本上,你正在创建两个单独的模型。
但在大多数情况下,您希望为模型相关属性提供组合以绘制预测。因此,拆分模型就没有意义,因为你只是剥离了必要的信息。