Keras如何处理多个输出中的反向传播

Keras如何处理多个输出中的反向传播,keras,deep-learning,backpropagation,Keras,Deep Learning,Backpropagation,对于这样的网络体系结构: +---+ input1--->| CNN | -------| +---+ | | +---+ +-------+ +-------+ input2--->| CNN | ----| Concat|-----|----| VGG |---- Main_out +-

对于这样的网络体系结构:

          +---+   
input1--->| CNN | -------|
           +---+         |  
                         |
           +---+      +-------+          +-------+ 
input2--->| CNN | ----| Concat|-----|----|  VGG  |---- Main_out
           +---+      +-------+     |    +-------+   
                          |         |
           +---+          |         |
input3--->| CNN | --------|        Aux_out
           +---+   
反向传播流是如何进行的?我是说,有两个反向传播步骤?或者来自
主输出的唯一一个更新权重

我使用每个输出的损失权重:

model.compile(loss="categorical_crossentropy",optimizer=OPT,metrics=["accuracy"],
            loss_weights={'main_output': 1., 'aux_output': 0.2}

不同输出的损耗根据
loss\u weights
组合成最终损耗

final_loss = loss_main + 0.2*loss_aux
在每次迭代中,将通过一个反向传播步骤更新有关此损失的参数。

(我无法发表评论,因为我没有足够的声誉,所以我将我的问题作为答案发布。对此表示抱歉,但我很难获得有关该主题的信息)

当我问同样的问题时,我也很难理解它是如何工作的;正如JulesR所说,在使用另一种网络架构添加“辅助输出”时,我有更好的“主输出”准确性

如果我理解dontloo的响应(如果我错了,请纠正我),尽管有多个输出,但只有一个反向传播,但使用的损失根据输出进行加权。因此,对于JulesR的网络,反向传播过程中VGG权重的更新也受到该加权损失的影响(因此受到“中间输出”的影响)?如果是,VGG网络在这个输出之后,这不是很奇怪吗


另外,@JulesR提到辅助输出可以帮助解决消失梯度问题。你有关于辅助输出效果的文章的链接吗?

所以,有两个反向传播步骤具有相同的损失?一个来自Main_out,另一个来自Aux_out?@JulesR我已经编辑了答案,希望是clearer@MatiasValdenegro当包含辅助输出时,我有更好的主输出精度。我知道aux_out可以帮助解决消失梯度问题。我只是想了解Keras在这种情况下是如何处理反向传播的。前三个CNN权重是否会更新两次?一个更新来自主输出,另一个更新来自辅助输出?辅助输出使用un GoogLeNet参见