Caffe 中loss计算过程

Caffe 中loss计算过程
Caffe中由solver统筹排列网络,由solver::forward()函数逐层进行前向传播(通过调用各个layer的forward()函数)计算,并计算整个网络的loss值。
(1)Solver::setlossweights()函数 根据各层layer的参数设置各层的loss标志,例:当layer参数中设置loss_weight = 1时,该层的loss 标志为1(若一个网络同时含有多个loss layer时,则各个loss layer的loss_weight 总和为1)。并将该层的diff(所有元素)设置为loss_weight;
(2)最后在solver::forward()函数中根据layer的loss 标志是否为1 来进行叠加计算各层loss, 得到网络总的loss值:
loss +=caffe_cpu_dot{ top[loss]->cpu_data(), top[loss]->cpu_diff()}。

你可能感兴趣的:(深度学习)