caffe中的各种loss函数
转自:https://blog.csdn.net/u012177034/article/details/52144325
机器学习的目的就是通过对训练样本输出与真实值不一致的进行惩罚,得到损失Loss,然后采用一定的优化算法对loss进行最小优化,进而得到合理的网络权值。本文介绍Caffe中含有的常见的LossLayer及其参数设置方法
Caffe的LossLayer主要由6个:
(1)ContrastiveLossLayer
对比损失函数主要用来训练siamese网络,改网络为专门处理同时输入两张图像的网络,如用于FaceVerification的DeepID网络。在改网络的最后需要对比两张图像是否为一张人脸,因此需要一个对比损失函数。目标检测暂时不会用到
(2)EuclideanLossLayer
适合回归任务,尤其输出值为实数时。
输入blob向量:长度为2,两个(N,C,H,W)维的prediction与groundTruth blob,N张图像,在这里的CHW应该都是1.
输出blob:预测值与真实值的均方误差E,实数
(3)HingeLossLayer
按损失函数,适用于多分类任务。
输入blob向量:长度为2,包括
预测的score值:(N,C,H,W)维,代表N个样本每一个样本在C类中的每一类上的得分。其中HW应该都为1
真实值:(N,1,1,1),样本的真实Label
输出blob:损失值E
其中
其中表示第n个样本在第k类上的得分,p表示L范数的阶,默认为1范数。可取2范数。
由SVM的原理可知一层全连接网络+HingeLossLayer等价于一个线性SVM,2范数Hinge损失的SVM也叫做L2-SVM
(4)InfogainLossLayer
信息增益损失。MultinomialLogisticLoss的泛化版本,不仅仅接受预测的每个样本在每类上的概率信息,还接受信息增益矩阵信息。当信息增益矩阵为单位阵的时候两者是等价的。
输入blob:
预测概率值:(N,C,H,W)维,其中HW应该为1
真实标签:(N,1,1,1)维
信息增益矩阵H(可选,默认为单位阵):(1,1,K,K)维,其中K为类别的个数
输出blob:误差损失E
(5)MultinomialLogisticLossLayer
多项逻辑损失,主要处理多分类问题。当输出是每一类的概率时用这个损失函数。
输入blob:
预测概率值:每一个样本在每一类的概率,(N,C,H,W)维,N为样本个数,C为类别个数,HW应该均为1
真实标签:(N,1,1,1)维
输出blob:误差损失E,其中表示估计的样本n为其真实标签label的概率
(5)SoftmaxLossLayer
等价于softmaxLayer+MultinomialLogisticLossLayer。在训练时用该层,测试时用softmax层。为什么要多添加一个SoftmaxLossLayer,而不是用Softmax+MltinomialLogisticLayer来做?主要原因是直接采用这种SoftmaxLoss计算梯度时在数值计算上更稳定!!!具体原因参考点击打开链接
输入blob:每个样本在每个类别的得分
输出blob:误差损失E,形式同多项逻辑损失,只不过估计概率P的来源不一样
(6)SigmoidCrossEntroyLossLayer
Sigmoid交叉熵损失,主要用于二分类问题。
等价于SigmoidLayer+CrossEntropyLayer,第一层先将score转为概率输入(为什么不是softmaxLayer转换为概率呢???对于二分类问题用Sigmoid函数计算出一个概率即可,多分类问题用softmax函数),第二层计算交叉熵损失.采用一个新层而不是由两个已有的层来实现,主要原因也是由于数值稳定性
输入blob:每个样本在每一类上的得分。(N,C,H,W)维,其中HW应该为1。
输出blob:误差损失E,其中Pn表示估计的该类为类1的概率,labeln为样本n的类别(0或者1)。
由E的定义可知,该E其实等价于MultinomialLogisticLoss中的二分类情况
最后来个提醒,Caffe中,默认每一层都可以作为LossLayer,不过层的名字中不带Loss的层其"Loss_weight"属性默认为0,即对最后的总的Loss贡献为0。名字中带Loss的层可以在网络的任意位置使用(不一定非在网络的输出最后部分),且可以有不止一个LossLayer,最后的训练所使用的Loss为所有LossLayer损失的加权和,即按下式计算:
loss := 0
for layer in layers:
for top, loss_weight in layer.tops, layer.loss_weights:
loss += loss_weight * sum(top)
caffe中的各种loss函数相关推荐
- caffe中的多种loss函数
https://blog.csdn.net/u012177034/article/details/52144325 机器学习的目的就是通过对训练样本输出与真实值不一致的进行惩罚,得到损失Loss,然后 ...
- caffe中各种cblas的函数使用总结
转自:http://www.cnblogs.com/huashiyiqike/p/3886670.html 和http://blog.sina.com.cn/s/blog_4a03c0100101et ...
- 深度学习中常见的LOSS函数及代码实现
Introduction 训练深度学习模型地目的只有一个,尽可能的学习到训练数据的分布.像往常的考试一样,考试成绩会有一个分数作为评判标准,评价你对于知识点地掌握情况,以便后续针对性地去学习.深度学习 ...
- 在caffe中添加新层 L1 Loss layer
本文地址:http://blog.csdn.net/ismarvellous/article/details/79069661,转载请注明出处. 本文涉及的所有完整文件可在我的github下载. 1. ...
- 'int' object has no attribute 'backward'报错 使用Pytorch编写 Hinge loss函数
在编写SVM中的Hinge loss函数的时候报错"'int' object has no attribute 'backward'" for epoch in range(50) ...
- caffe中各种loss函数
转自: http://www.mamicode.com/info-detail-594961.html Caffe中的损失函数解析 导言 在有监督的机器学习中,需要有标签数据,与此同时,也需要有对应的 ...
- caffe中loss函数代码分析--caffe学习(16)
接上篇:caffe中样本的label一定要从序号0开始标注吗?–caffe学习(15) A: 1:数学上来说,损失函数loss值和label从0开始还是从1或者100开始是没有直接联系的,以欧式距离损 ...
- caffe中的loss函数简单介绍
本文转载自:http://www.cnblogs.com/jianyingzhou/p/4094095.html,感谢作者的热心分享! 进一步了解可以看这篇博文:http://www.cnblogs. ...
- 深度学习中的损失函数总结以及Center Loss函数笔记
北京 上海巡回站 | NVIDIA DLI深度学习培训 2018年1月26/1月12日 NVIDIA 深度学习学院 带你快速进入火热的DL领域 阅读全文 ...
最新文章
- VS2017-VC++校验和计算小工具
- abort has been called翻译_2020年12月大学英语四级翻译练习题:股票投资_四级
- ETL的数据同步工具调研(持续更新中)
- Spring安全性和密码编码
- 聊聊Spring Cloud版本的那些事儿
- android 百度地图开发 怎么减小包的大小,最新的百度地图Android开发包中,如何隐藏右下角的放大缩小控件...
- 跟我一起了解less(3):判断和循环
- 系统在此应用程序中检测到基于堆栈的缓冲区_Linux 中的零拷贝技术
- iptables常用
- php access 所有表,Oracle|sql server|access 数据库里的所有表名,字段名
- Crystal Reports - New Report
- Gym 100818F	Irrational Roots
- 3种方法解决txt文档乱码
- 如何管理好团队?史玉柱自述
- Hongda -接小球游戏
- 变限积分性质的总结笔记
- 第6天:分割处理与中断处理
- 算法基础部分-二叉树
- 谷歌开源 ClusterFuzz,自动化查找并修复 bug
- 字节跳动校招开发一面、二面【凉】