如果我在网络中定义多个损失层,从这些末端到网络的开头是否会发生多个反向传播?我的意思是,他们真的是这样工作的吗?
假设我有这样的事情:
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
}
因此,基本上假设我们不是每个网络都有一个分类/损失,而是在两者之间也有几个。
如果它们起作用,我如何将所有损失加在一起并使我的最终损失成为所有先前损失的总和?
Caffe 会为你做到这一点。
此外,对于每个损失层,你有loss_weight https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto#L322-L325参数允许您决定此特定损失相对于网络中所有其他损失的影响力。
总的来说,caffe最小化的损失是weighted模型中所有损失层的总和。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)