caffe学习笔记3.3--Loss
2016-04-26 16:23
393 查看
与大多数的机器学习算法一样,caffe的学习也是由loss function驱动的(或者叫error,cost,objective function)。损失函数的目标是,将参数(就是网络中的权值和偏置)映射到一个能够度量参数“不好程度”的标量中,因此,其目标就是让这个标量最小化(其实就是调整参数,是的损失函数的值最小)。
在caffe中,通过前向传播计算损失,每一层由一系列的输入(bottom)blobs产生一系列的输出(top),某些层的输出可以用于损失函数,一类典型的多分类任务的损失函数是
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "pred"
bottom: "label"
top: "loss"
}
在
按惯例 , caffe中后缀为loss的层均用于损失函数, 其他层单纯的用于中间计算。但是,可以通过添加一个
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "pred"
bottom: "label"
top: "loss"
loss_weight: 1
}
但是,对于能反向传播的层,可以给定一个非0的loss_weight,例如,如果需要,正则化网络中某些层的中间值。对于有关联损失的非孤立的输出,其损失可以简单通过所有blob的求和计算的出
caffe中整个网络的损失可以通过对整个权值损失求和得到,其伪代码如下:
loss := 0
for layer in layers:
for top, loss_weight in layer.tops, layer.loss_weights:
loss += loss_weight * sum(top)
参考资料:
http://caffe.berkeleyvision.org/tutorial/loss.html
在caffe中,通过前向传播计算损失,每一层由一系列的输入(bottom)blobs产生一系列的输出(top),某些层的输出可以用于损失函数,一类典型的多分类任务的损失函数是
SoftmaxWithLoss函数,其定义如下:
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "pred"
bottom: "label"
top: "loss"
}
在
SoftmaxWithLoss函数中,top blob是一个标量值,它是整个mni-batch损失的平均值(由预测标签和真实标签计算得到)
Loss weights
如果一个网络由多个层可以产生损失(比如,一个网络使用SoftmaxWithLoss对输入数据分类,同时也使用
EuclideanLoss层重构网络), loss weights可以用来给定两个损失的重要性.
按惯例 , caffe中后缀为loss的层均用于损失函数, 其他层单纯的用于中间计算。但是,可以通过添加一个
loss_weight: <float>字段将任意层定义为一个loss。对于后缀为loss的层,该层的第一个top blob的loss_weight默认为1,其余层默认为0。因此上面的
SoftmaxWithLoss层的定义等价于:
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "pred"
bottom: "label"
top: "loss"
loss_weight: 1
}
但是,对于能反向传播的层,可以给定一个非0的loss_weight,例如,如果需要,正则化网络中某些层的中间值。对于有关联损失的非孤立的输出,其损失可以简单通过所有blob的求和计算的出
caffe中整个网络的损失可以通过对整个权值损失求和得到,其伪代码如下:
loss := 0
for layer in layers:
for top, loss_weight in layer.tops, layer.loss_weights:
loss += loss_weight * sum(top)
参考资料:
http://caffe.berkeleyvision.org/tutorial/loss.html
相关文章推荐
- 关于Bootstrap日期控件datetimepicker被模态框等遮罩在底部的问题及解决办法。
- HTML5——购物车
- 剑指offer(22):包含min函数的栈
- [javascript] 看知乎学习js闭包
- CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
- 基于Jquery插件实现跨域异步上传文件功能
- 学习angularjs总结(一)
- 发布项目,加入CRUD功能
- 同级css渲染顺序问题
- 剑指Offer--029-数组中出现次数超过一半的数字
- js修改浏览器url
- Bootstrap每天必学之模态框(Modal)插件
- JS树-深度遍历和广度遍历
- css里设置一个div在顶部固定,不随滚动条滚动而滚动
- javascript的this的三种使用方式
- JS二叉树的遍历(前序,中序,后序)
- jQuery源码解析(架构与依赖模块)笔记二--核心模块
- HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
- jquery checkbox勾选/取消勾选的诡异问题
- css设计注意事项