caffe教程翻译:Loss
2016-03-28 15:00
295 查看
本文为Caffe官网教程中Loss项,原文地址:http://caffe.berkeleyvision.org/tutorial/loss.html
Caffe中的loss是由Net的Forward pass计算得出的。每一个Layer根据输入的Blobs计算得到输出的Blobs。某些Layer的输出会被用于loss function计算badness。对于one-versus-all classification task(多分类问题),一个经典的loss function是SoftmaxWithLoss function(广义线性回归分析损失函数)。如下定义:
在SoftmaxWithLoss function中,输出是一个标量,计算的是预测值(pred)与实际值(label)之间的平均误差(loss)。
Caffe里面的约定,Layer名称中以Loss结尾表示这是一个会产生loss的Layer,除此之外,其他的Layer只是单纯的用于中间计算。然而,任何一个Layer都可以被用于产生loss,如果为Layer产生的每一个output Blob添加一个属性:loss_weight: 的话。每一个Loss Layer都有一个隐含的loss weight,对于第一个top/output,loss weight是1,对于其他的top/output,loss weight是0;其他类型Layer隐含的loss weight都是0。所以上述的SoftmaxWithLoss layer也可以写成:
然而,反向迭代时,一个Layer可以赋予一个非零的loss weight,用于调整中间Layer产生的一些数据、参数。对于不止一个输出(top)的Layer(对应的有非零的loss weight),输出的loss是summing over all entries of the blob(对所有输出-blob的loss的和)。
Caffe最后输出的loss,是由Net中所有的loss加权得到的,如下所示(伪代码):
本文摘自:/article/2935011.html
Loss(损失)
与绝大多数的机器学习引擎一样,Caffe是由一个loss function(损失函数)驱动的。loss function也称为 error function,cost function或者objective function。loss function利用模型中的参数(比如模型中网络的weights-权重参数)运算得出一个(标量)结果,这个结果表明参数设置的badness,通过最小化loss function得出的badness,来优化算法,达到学习的目标。Caffe中的loss是由Net的Forward pass计算得出的。每一个Layer根据输入的Blobs计算得到输出的Blobs。某些Layer的输出会被用于loss function计算badness。对于one-versus-all classification task(多分类问题),一个经典的loss function是SoftmaxWithLoss function(广义线性回归分析损失函数)。如下定义:
layer { name: "loss" type: "SoftmaxWithLoss" bottom: "pred" bottom: "label" top: "loss" }
在SoftmaxWithLoss function中,输出是一个标量,计算的是预测值(pred)与实际值(label)之间的平均误差(loss)。
Loss weights(损失权重)
对于有多个Layer组成的Net而言(例如一个由SoftmaxWithLoss layer和EuclideanLoss layer组成的Net),loss weights(权重)用来表征不同Layer产生的loss的重要性。Caffe里面的约定,Layer名称中以Loss结尾表示这是一个会产生loss的Layer,除此之外,其他的Layer只是单纯的用于中间计算。然而,任何一个Layer都可以被用于产生loss,如果为Layer产生的每一个output Blob添加一个属性:loss_weight: 的话。每一个Loss Layer都有一个隐含的loss weight,对于第一个top/output,loss weight是1,对于其他的top/output,loss weight是0;其他类型Layer隐含的loss weight都是0。所以上述的SoftmaxWithLoss layer也可以写成:
layer { name: "loss" type: "SoftmaxWithLoss" bottom: "pred" bottom: "label" top: "loss" loss_weight: 1 }
然而,反向迭代时,一个Layer可以赋予一个非零的loss weight,用于调整中间Layer产生的一些数据、参数。对于不止一个输出(top)的Layer(对应的有非零的loss weight),输出的loss是summing over all entries of the blob(对所有输出-blob的loss的和)。
Caffe最后输出的loss,是由Net中所有的loss加权得到的,如下所示(伪代码):
loss := 0 for layer in layers: for top, loss_weight in layer.tops, layer.loss_weights: loss += loss_weight * sum(top)
本文摘自:/article/2935011.html
相关文章推荐
- css中的溢出文本和文本对齐
- JS代码放在何处?
- js中的进制转换
- MVC学习系列——HtmlHelper扩展
- jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令
- CSS 同时具备两个class的样式
- Windows环境下的NodeJS+NPM+Bower安装配置
- MVC如何在路由器(RouteConfig)定义后缀.html
- SharePoint2013 IT Professional - Limited Access
- 实用CSS3属性之 :target伪类实现Tab切换效果
- HTML5来了,7个混合式移动开发框架
- GetJson
- [BZOJ1015][JSOI2008]星球大战starwar
- javascript中获取class
- 禁止页面后退JS(兼容各浏览器)
- js操作cookie的一些注意项
- 2.2JSON数据解析(一)
- CSS样式给按钮加阴影
- [BZOJ1016][JSOI2008]最小生成树计数
- JSP 自定义标签tld--页面片段fragment