原文


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: <float>的话。每一个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)

Caffe学习:Loss相关推荐

  1. Caffe学习系列(19): 绘制loss和accuracy曲线

    转载自: Caffe学习系列(19): 绘制loss和accuracy曲线 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5110204.htm ...

  2. caffe中loss函数代码分析--caffe学习(16)

    接上篇:caffe中样本的label一定要从序号0开始标注吗?–caffe学习(15) A: 1:数学上来说,损失函数loss值和label从0开始还是从1或者100开始是没有直接联系的,以欧式距离损 ...

  3. Caffe学习系列(8):solver优化方法

    Caffe学习系列(8):solver优化方法 上文提到,到目前为止,caffe总共提供了六种优化方法: Stochastic Gradient Descent (type: "SGD&qu ...

  4. Caffe学习系列(22):caffe图形化操作工具digits运行实例

    上接:Caffe学习系列(21):caffe图形化操作工具digits的安装与运行 经过前面的操作,我们就把数据准备好了. 一.训练一个model 右击右边Models模块的" Images ...

  5. Caffe 学习系列

    学习列表: Google protocol buffer在windows下的编译 caffe windows 学习第一步:编译和安装(vs2012+win 64) caffe windows学习:第一 ...

  6. caffe学习日记--lesson4:windows下caffe DEMO (mnist and cifar10)

    caffe学习日记--lesson4:windows下caffe DEMO (mnist and cifar10) 1.下载数据 mnist官网:http://yann.lecun.com/exdb/ ...

  7. caffe学习笔记2:net forward与backward

    caffe学习笔记2:Forward and Backward 原网页:http://caffe.berkeleyvision.org/tutorial/forward_backward.html f ...

  8. Caffe学习笔记(二):Caffe前传与反传、损失函数、调优

    Caffe学习笔记(二):Caffe前传与反传.损失函数.调优 在caffe框架中,前传/反传(forward and backward)是一个网络中最重要的计算过程:损失函数(loss)是学习的驱动 ...

  9. caffe学习--cifar10学习-ubuntu16.04-gtx650tiboost--1g--02

    caffe学习--cifar10学习-ubuntu16.04-gtx650tiboost--1g--02 训练网络: caffe train -solver examples/cifar10/cifa ...

  10. caffe学习(9)LeNet在Caffe上的使用

    使用官网例程训练LeNet. Training LeNet on MNIST with Caffe 准备数据 Caffe程序的运行要注意需命令行要在Caffe的根目录下. cd $CAFFE_ROOT ...

最新文章

  1. Java学习笔记---字符类型
  2. matlab 2010无法运行程序,matalb r2010a安装后打开出现一系列警告,无法运行,哪位大神帮...
  3. JAVA中如何将一个json形式的字符串转为json对象或对象列表
  4. 数据缺失、混乱、重复怎么办?最全数据清洗指南
  5. Android 屏幕适配从未如斯简单(8月10日最终更新版)
  6. 聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用
  7. Position和anchorPoint
  8. 类似QQ右上角选项弹框
  9. python学习四(处理数据)
  10. Codeforces Beta Round #17 C. Balance DP
  11. (进阶篇_01)Oracle数据同步3种场景
  12. hive-05-Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
  13. 宏正ATEN推出ALTUSEN系列 全面冲刺KVM高端市场
  14. dfmea文件_DFMEA范本.doc
  15. 人脸及脸部关键点检测控件
  16. 2021SC@SDUSC Zxing开源代码(十六)PDF417二维码(二)
  17. c语言传送send 函数解析,C语言sendto()函数:经socket传送数据
  18. 手机通过RNDIS共享网络
  19. fast无线路由器设置服务器,迅捷(FAST)路由器静态ip上网设置方法
  20. 旧手机(小米4)装linux的一个记录

热门文章

  1. C++--第3课 - 函数的升级-上
  2. 数据--第44课 - 最小连通网
  3. 项目微管理23 - 会议
  4. 从 0 开始了解 Docker(ubuntu )
  5. mysql:赋予用户权限、查看及修改端口号
  6. 从KRE到XRE:ASP.NET 5中正在消失的那些K
  7. ios中UIWebview和asiHttprequest的用法
  8. 比较简单搞定S60的签名
  9. 洛谷 P2383 狗哥玩木棒
  10. 《XHTML》pdf