caffe loss以及正则项反向传播过程

概述

以前一直以为反向传播的过程是这样的,由Softmax计算得出分类loss,然后在加上L2正则项得出总的total_loss,然后再利用total_loss进行反向梯度的计算,而正则项会在每层的Forward函数中计算并返回,表面上感觉很对,但是实际分析就会发现这样想法不合理的地方,

  • 对正则项的计算,不同的solver是不一样的,而且正则项的方法也是有L2L1, 每层layer的Forward函数在不知道正则方法和solver类型的情况下是不可能计算出正则结果的。

  • 对于用total_loss进行反向梯度传播,我们知道total_loss在每一层只和该层的权值有关系,而total_loss中包含着所有权值的正则化结果,这时候,如果我想把反向误差传播转化为矩阵运算,显然不行。

caffe中处理方法

首先需要声明的是,每一个layer的Forward函数的确有返回loss,但是这个loss函数不是表示正则项的结果,而是应付可能出现的如下情况:就是有些网络并不是在最后才进行Softmax的分类计算,有时候会在网络的中间插入Softmax分类,例如googLeNet
所以在caffe中,loss和正则项的计算过程是下面的叙述这样的

计算Softmax分类loss

Softmax分类loss是在Network的最后一层SoftmaxWithLossLa

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值