如果我在网络中定义多个丢失层,那么从这些端到网络的开头会发生多次反向传播吗?我的意思是,他们甚至会这样工作吗?
假设我有这样的事情:
Layer1{
}
Layer2{
}
...
Layer_n{
}
Layer_cls1{
bottom:layer_n
top:cls1
}
Layer_cls_loss1{
type:some_loss
bottom:cls1
top:loss1
}
Layer_n1{
bottom:layer_n
..
}
Layer_n2{
}
...
layer_n3{
}
Layer_cls2{
bottom:layer_n3
top:cls2
}
Layer_cls_loss2{
type:some_loss
bottom:cls2
top:loss2
}
layer_n4{
bottom:layer_n3
..
}
...
layer_cls3End{
top:cls_end
bottom:...
}
loss{
bottom:cls_end
top:loss:
type: someloss
}
所以基本上假设不是每个网络都有一个分类/丢失,我们之间也有几个。
如果他们工作,我怎么能将所有的损失加在一起并使我最后的损失成为以前所有损失的总和?
答案 0 :(得分:3)
Caffe为你做这件事
此外,对于每个损失层,您都有loss_weight
参数,该参数允许您决定此特定损失对网络中所有其他损失的影响程度。
总的来说,caffe最小化的损失是模型中所有损失层的加权总和。