【Caffe笔记】三.Loss

    与大多机器学习模型一样,在caffe中,学习由一个损失函数(误差,代价,目标函数)所驱动。一个损失函数将参数集(网络权值)映射到一个可以标识这些参数“不良程度”的标量值来学习目标。学习的目标是找到最佳的参数集使得损失函数最小。

    在caffe中,损失是通过网络的前向计算得到的。每一层由一系列的输入blobs(bottom)产生输出blobs(top)。这些层的某些输出可以用作损失函数。典型的多分类任务的损失函数SoftmaxWithLoss函数,使用以下网络定义。

layer {
    name: "loss"
    type: "SoftmaxWithLoss"
    bottom: "pred"
    bottom: "label"
    top: "loss"
}

1.Loss weights

    对于含有多个损失函数的网络来说,loss weight可以用于指定它们之间的相对重要性。

    有着loss后缀的层对损失函数有贡献,其它层被假定为仅仅用于中间计算。通过在层定义中加入loss_weight:<float>字段,任何层都可作为一个loss。对于带loss后缀的层来说,其对于该层的第一个top blob含有一个隐式的loss_wight:1,而其它层对于所有的top blob来说有一个隐式的loss_weight:0。因此,上述的SoftmaxWithLoss等价于:

layer {
    name: "loss"
    type: "SoftmaxWithLoss"
    bottom: "pred"
    bottom: "label"
    top: "loss"
    loss_weight: 1
}

    对于任何可以反向传播的层都可添加一个非0的loss_weight,Caffe中最终的损失函数可以通过对整个网络中所有的权值损失进行求和获得,伪代码如下:

loss = 0
for layer in layers:
    for top,loss_weight in layer.tops,layer.loss_weight:
        loss += loss_weight * sum(top)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值