
Keras
人工神经网络简介
|
277
添加额外的输出非常容易:只需将它们连接到适当的层,然后将它们添加到模型的输出
列表中即可。例如,以下代码构建了如图 10-16 所示的网络:
[...] #
Same as above, up to the main output layer
output = keras.layers.Dense(1, name="main_output")(concat)
aux_output = keras.layers.Dense(1, name="aux_output")(hidden2)
model = keras.Model(inputs=[input_A, input_B], outputs=[output, aux_output])
每个输出都需要自己的损失函数。因此当我们编译模型时,应该传递一系列损失
注 20
(如
果传递单个损失,Keras 将假定所有输出必须使用相同的损失)。默认情况下,Keras 将
计算所有这些损失,并将它们简单累加即可得到用于训练的最终损失。我们更关心主要
输出而不是辅助输出(因为它仅用于正则化),因此我们要给主要输出的损失更大的权
重。幸运的是,可以在编译模型时设置所有的损失权重:
1
model.compile(loss=["mse", "mse"], loss_weights=[0.9, 0.1], optimizer="sgd")
现在当训练模型时,需要为每个输出提供标签。在此示例中,主要输出和辅助输出应预
测出相同的结果,因此它们应使用相同的标签 ...