Caffe的loss layer(转)
英文可查:地址
1.SoftmaxWithLoss
对一对多的分类任务计算多项逻辑斯蒂损失,并通过softmax传递预测值,来获得各类的概率分布。该层可以分解为SoftmaxLayer+MultinomialLogisticLossLayer,但它的梯度计算在数值上更为稳健。在测试时,该层可用SoftmaxLayer替代。
前向传播
bottom: 1.(N×C×H×W)维的预测得分x,N是batch数,类别总数为K=CHW,目前看到的SoftmaxWithLossLayer的bottom一般是一个InnerProduct层,所以K是写在一起的。该层将这些得分通过softmax函数(多项logistic回归模型)映射为概率分布,n∈[0, 1, …, N-1],k、k’∈[0, 1, …, K-1];
2.(N×1×1×1)维的标签l,,表示这个bacth中各样本的正确标签。
top:(1×1×1×1)维,对softmax输出类别概率的交叉熵分类损失
。
反向传播
top:(1×1×1×1)维,该blob的微分就是loss_weight λ,λ是该层输出 的系数,整个网络的损失为
,这样
。
bottom: 1.(N×C×H×W)维的预测得分x,反向计算微分;
2.(N×1×1×1)维的标签,忽略。
另外可参考一篇很好的介绍文章:http://blog.csdn.net/u012162613/article/details/44239919
2.EuclideanLoss
对回归任务计算欧氏距离(L2)损失,可用于最小二乘回归任务。
前向传播
bottom: 1.(N×C×H×W)维的预测,
2.(N×C×H×W)维的真实结果,
top:(1×1×1×1)维的欧氏距离损失:
反向传播
top:(1×1×1×1)维,该blob的微分就是loss_weight λ,λ是该层输出 的系数,整个网络的损失为
,这样
。
bottom: 1.(N×C×H×W)维的预测,反向计算微分
;
2.(N×C×H×W)维的预测,反向计算微分
。
3.HingeLoss
对一对多的分类任务计算铰链损失。
前向传播
bottom: 1.(N×C×H×W)维的预测t,blob值的范围是,表示对K=CHW中每个类的预测得分。在SVM中,
是D维特征
和超平面参数
的内积
,因此只有一个InnerProductLayer(num_output = D)提供预测到HingeLossLayer中的网络就相当于一个SVM;
2.(N×1×1×1)维的真实标签l,。
top:(1×1×1×1)维的铰链损失:,对应于
正规化,默认是L1正规化,也可以用L2正规化,
。
反向传播
top:(1×1×1×1)维,该blob的微分就是loss_weight λ,λ是该层输出 的系数,整个网络的损失为
,这样
。
bottom: 1.(N×C×H×W)维的预测得分t,反向计算微分;
2.(N×1×1×1)维的标签,忽略。
4.SigmoidCrossEntropyLoss
计算交叉熵(逻辑斯蒂)损失,通常用于以概率形式预测目标。该层可以分解为SigmoidLayer+CrossEntropyLayer,但它的梯度计算在数值上更为稳健。在测试时,该层可用SigmoidLayer替代。
前向传播
bottom: 1.(N×C×H×W)维的预测得分,是用sigmoid函数
的概率预测
;
2.(N×C×H×W)维的真实结果,。
top:(1×1×1×1)维的交叉熵损失:。
反向传播
top:(1×1×1×1)维,该blob的微分就是loss_weight λ,λ是该层输出 的系数,整个网络的损失为
,这样
。
bottom: 1.(N×C×H×W)维的预测得分x,反向计算微分;
2.(N×1×1×1)维的标签,忽略。
5.MultinomialLogisticLossLayer
对一对多的分类任务计算多项逻辑斯蒂损失,直接将预测的概率分布作为输入。当预测并不是概率分布时应该用SoftmaxWithLossLayer,因为它在计算多项逻辑斯蒂损失前通过SoftmaxLayer将预测映射为分布。
前向传播
bottom: 1.(N×C×H×W)维的预测得分,blob值的范围是[0, 1],表示对K=CHW个类中每个类的预测概率。每个预测向量
之和为1,
;
2.(N×1×1×1)维的标签l,,表示这个bacth中各样本的正确标签。
top:(1×1×1×1)维的多项逻辑斯蒂损失。
反向传播
top:(1×1×1×1)维,该blob的微分就是loss_weight λ,λ是该层输出 的系数,整个网络的损失为
,这样
。
bottom: 1.(N×C×H×W)维的预测得分,反向计算微分
;
2.(N×1×1×1)维的标签,忽略。
6.InfogainLoss
是MultinomialLogisticLossLayer的泛化,利用“information gain”(infogain)矩阵指定所有标签对的“value“,如果infogain矩阵一致则与MultinomialLogisticLossLayer等价。
前向传播
bottom: 1.(N×C×H×W)维的预测得分,blob值的范围是[0, 1],表示对K=CHW个类中每个类的预测概率。每个预测向量
之和为1,
;
2.(N×1×1×1)维的标签l,,表示这个bacth中各样本的正确标签;
3.(1×1×K×K)维的infogain矩阵H(相应的另一个为I),若H=I则该层等价于MultinomialLogisticLossLayer。
top:(1×1×1×1)维的infogain多项逻辑斯蒂损失,
指的是H的第
行。
反向传播
top:(1×1×1×1)维,该blob的微分就是loss_weight λ,λ是该层输出 的系数,整个网络的损失为
,这样
。
bottom: 1.(N×C×H×W)维的预测得分,反向计算微分
;
2.(N×1×1×1)维的标签,忽略;
3.(1×1×K×K)维的infogain矩阵,忽略。
7.ContrastiveLoss
计算对比损失,其中
,可用于训练siamese网络。
前向传播
bottom: 1.(N×C×1×1)维的特征;
2.(N×C×1×1)维的特征;
3.(N×C×1×1)维的二元相似度。
top:(1×1×K×K)维的对比损失。
反向传播
top:(1×1×1×1)维,该blob的微分就是loss_weight λ,λ是该层输出 的系数,整个网络的损失为
,这样
。
bottom: 1.(N×C×1×1)维的特征a;
2.(N×C×1×1)维的特征b。
Caffe的loss layer(转)的更多相关文章
- 怎样在caffe中添加layer以及caffe中triplet loss layer的实现
关于triplet loss的原理.目标函数和梯度推导在上一篇博客中已经讲过了.详细见:triplet loss原理以及梯度推导.这篇博文主要是讲caffe下实现triplet loss.编程菜鸟.假 ...
- Tutorial: Triplet Loss Layer Design for CNN
Tutorial: Triplet Loss Layer Design for CNN Xiao Wang 2016.05.02 Triplet Loss Layer could be a tri ...
- caffe 学习(3)——Layer Catalogue
layer是建模和计算的基本单元. caffe的目录包含各种state-of-the-art model的layers. 为了创建一个caffe model,我们需要定义模型架构在一个protocol ...
- Caffe源码-Layer类
Layer类简介 Layer是caffe中搭建网络的基本单元,caffe代码中包含大量Layer基类派生出来的各种各样的层,各自通过虚函数 Forward() 和 Backward() 实现自己的功能 ...
- 在Caffe添加Python layer详细步骤
本文主要讨论的是在caffe中添加python layer的一般流程,自己设计的test_python_layer.py层只是起到演示作用,没有实际的功能. 1) Python layer 在caff ...
- caffe(6) Blob,Layer,Net 以及对应配置文件的编写
深度网络(net)是一个组合模型,它由许多相互连接的层(layers)组合而成.Caffe就是组建深度网络的这样一种工具,它按照一定的策略,一层一层的搭建出自己的模型.它将所有的信息数据定义为blob ...
- 【caffe】loss function、cost function和error
@tags: caffe 机器学习 在机器学习(暂时限定有监督学习)中,常见的算法大都可以划分为两个部分来理解它 一个是它的Hypothesis function,也就是你用一个函数f,来拟合任意一个 ...
- caffe调loss方法
正文 what should I do if... ...my loss diverges? (increases by order of magnitude, goes to inf. or NaN ...
- 画caffe训练loss曲线
Linux下操作 1. 将loss值存储到lossInf.txt中 fName1='loss.txt' cat loss.log | grep "solver.cpp:218] Iterat ...
随机推荐
- MySql的多存储引擎架构, 默认的引擎InnoDB与 MYISAM的区别(滴滴)
1.存储引擎是什么? MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术, ...
- JVM内存模型一
JVM定义了若干个程序执行期间使用的数据区域.这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁.而其他的数据依赖于每一个线程,在线程创建时创建,在线程退出时销毁. 程序计数器 程序计 ...
- python2 python3共存解决方案
作者:匿名用户链接:https://www.zhihu.com/question/21653286/answer/95532074来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- 【比赛】NOIP2017 小凯的疑惑
找规律:ans=a*b-a-b 证明:(可见 体系知识) gcd(A, B) = 1 → lcm(A, B) = AB 剩余类,把所有整数划分成m个等价类,每个等价类由相互同余的整数组成 任何数分成m ...
- 洛谷 P2184 贪婪大陆 解题报告
P2184 贪婪大陆 题目背景 面对蚂蚁们的疯狂进攻,小\(FF\)的\(Tower\) \(defence\)宣告失败--人类被蚂蚁们逼到了\(Greed\) \(Island\)上的一个海湾.现在 ...
- Metasploit+python生成免杀exe过360杀毒
Metasploit+python生成免杀exe过360杀毒 1在kali下生成一个反弹的msf的python脚本,命令如下: msfvenom -p windows/meterpreter/reve ...
- 前端学习 -- Css -- 兄弟元素选择器
为一个元素后边的元素设置css样式: 语法:前一个 + 后一个. 作用:可以选中一个元素后紧挨着的指定的兄弟元素. 为一个元素后边的所有相同元素设置css样式: 语法:前一个 ~ 后边所有. < ...
- Luogu 1220 关路灯(动态规划)
Luogu 1220 关路灯(动态规划) Description 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项 ...
- 利用机器学习实现微信小程序-加减大师自动答题
之前有看到微信小程序<跳一跳>别人用python实现自动运行,后来看到别人用hash码实现<加减大师>的自动答题领取娃娃,最近一直在研究深度学习,为啥不用机器学习实现呢?不就是 ...
- SpringCloud微服务实战-Zuul-APIGateway(十)
本文转自:http://blog.csdn.net/qq_22841811/article/details/67637786#准备工作 1 API Gateway 2 Zuul介绍 2.1 zuul的 ...