如何解释具有多个输出的Keras模型的摘要?

时间:2019-12-25 11:37:05

标签: r keras

给出以下代码:

input<-layer_input(shape=2)
hidden<-layer_dense(input,units=4,activation="sigmoid",use_bias=T)
outputs<- list(
  layer_dense(hidden,units=1,activation="linear",use_bias=F),
  layer_dense(hidden,units=1,activation="linear",use_bias=F)
)
model<-keras_model(inputs=input, outputs=outputs)
summary(model)

摘要调用的输出如下:

Model
Model: "model_63"
____________________________________________________________________________________________________________________________________________________
Layer (type)                                    Output Shape                     Param #           Connected to                                     
====================================================================================================================================================
input_63 (InputLayer)                           [(None, 2)]                      0                                                                  
____________________________________________________________________________________________________________________________________________________
dense_85 (Dense)                                (None, 4)                        12                input_63[0][0]                                   
____________________________________________________________________________________________________________________________________________________
dense_86 (Dense)                                (None, 1)                        4                 dense_85[0][0]                                   
____________________________________________________________________________________________________________________________________________________
dense_87 (Dense)                                (None, 1)                        4                 dense_85[0][0]                                   
====================================================================================================================================================
Total params: 20
Trainable params: 20
Non-trainable params: 0

以某种方式(此处未显示)网络无法正常运行。我怀疑该体系结构有问题。我想要的是一个具有两个输入神经元,4个隐藏神经元和2个线性输出神经元的网络。 关联列中括号内的数字是什么意思?

1 个答案:

答案 0 :(得分:1)

您设计的模型完全符合您在此处描述的内容。连接到表示当前层连接到的上一层,在您的情况下,density_85 [0] [0]表示所有4个先前的神经元,但不是它们的偏差-应该如此。 density_85有两个部分; [0]是8个参数的图层,每个输入要素4个,然后[1]将是4个参数,表示它们的偏差-激活功能之前的衬线添加。

将最后一层分成两部分实际上具有零影响。为什么?因为您创建了4个权重,所以对于上一层中的每个神经元,权重为1; 4 x 1 x 2 -完全一样,如果您一次创建8个权重-每个输出1个权重-4 x2。即使加上偏差也是如此。当您要继续进行一些复杂的图层,或者每个图层具有不同的复杂损失函数时,中断输出会起作用。

要进行可视化,请尝试使用deepviz::plot_model,它的绘制非常好,您可以更轻松地查看模型的功能。另外,如果您想增加模型容量,我建议增加层大小或也许增加额外的层。