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损失的加权和,即按下式计算:

[plain] view plain copy
  1. loss := 0
  2. for layer in layers:
  3. for top, loss_weight in layer.tops, layer.loss_weights:
  4. loss += loss_weight * sum(top)

caffe中的多种loss函数相关推荐

  1. caffe中的各种loss函数

    转自:https://blog.csdn.net/u012177034/article/details/52144325 机器学习的目的就是通过对训练样本输出与真实值不一致的进行惩罚,得到损失Loss ...

  2. caffe中各种cblas的函数使用总结

    转自:http://www.cnblogs.com/huashiyiqike/p/3886670.html 和http://blog.sina.com.cn/s/blog_4a03c0100101et ...

  3. 深度学习中常见的LOSS函数及代码实现

    Introduction 训练深度学习模型地目的只有一个,尽可能的学习到训练数据的分布.像往常的考试一样,考试成绩会有一个分数作为评判标准,评价你对于知识点地掌握情况,以便后续针对性地去学习.深度学习 ...

  4. 在caffe中添加新层 L1 Loss layer

    本文地址:http://blog.csdn.net/ismarvellous/article/details/79069661,转载请注明出处. 本文涉及的所有完整文件可在我的github下载. 1. ...

  5. 'int' object has no attribute 'backward'报错 使用Pytorch编写 Hinge loss函数

    在编写SVM中的Hinge loss函数的时候报错"'int' object has no attribute 'backward'" for epoch in range(50) ...

  6. caffe中各种loss函数

    转自: http://www.mamicode.com/info-detail-594961.html Caffe中的损失函数解析 导言 在有监督的机器学习中,需要有标签数据,与此同时,也需要有对应的 ...

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

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

  8. caffe中的loss函数简单介绍

    本文转载自:http://www.cnblogs.com/jianyingzhou/p/4094095.html,感谢作者的热心分享! 进一步了解可以看这篇博文:http://www.cnblogs. ...

  9. R语言将数据列中的多种日期格式统一变化为一种固定格式实战:使用lubridate包中的parse_date_time函数

    R语言将数据列中的多种日期格式统一变化为一种固定格式实战:使用lubridate包中的parse_date_time函数 目录

最新文章

  1. 幕后我最“牛” | 数据派优秀志愿者风采展
  2. 双核处理(动态规划)
  3. 【Xamarin开发 Android 系列 5】 Xamarin 的破解
  4. 网络与IO知识扫盲(三):从系统调用的角度,剖析 Socket 的连接过程、BIO 的连接过程
  5. android 串口通信_使用UART与ZYBO进行通信常用外设设计方案
  6. 外星人台式电脑_执掌游戏世界 外星人ALIENWARE m15丨17.9mm机身轻悍降临【电脑组装】公众号分享台式机笔记本电脑 京东商城特惠通道...
  7. cfdiv2/c/找规律
  8. win7 python2.7安装PIL库
  9. 8086架构/流水线及其优化
  10. 《响应式Web图形设计》一7.4 减小文件尺寸
  11. BZOJ5221[Lydsy2017省队十连测] 偏题
  12. 前端js十六进制格式的颜色和rgba格式颜色互转
  13. Reset、clock、locked和dcm_locked之间的坑
  14. 埃拉托色尼筛选法巧解质数问题(埃氏筛法求解素数问题)
  15. 项目建设方案的基本元素
  16. Unity导入图片报错File could not be read
  17. 投资因子(Investment factor)——投资组合分析(EAP.portfolio_analysis)
  18. java jolt tuxedo_Java中使用Jolt访问Tuxedo服务 – Tomcat环境部署测试
  19. 基于Vue3+TS+Vite+Cesium创建项目
  20. Genymotion ARM Translations

热门文章

  1. BetterTouchTool使用指南——TouchBar篇
  2. 麻省理工学院计算机科学,麻省理工学院素以世界顶尖的工程学和计算机科学而享誉世界[1-2] ,位列2015-16年世...
  3. java 及 js 格式化金额 三位一撇(逗号)
  4. java ms932_Shift_JIS, MS932 and Unicode(收藏自网络)
  5. 关于 npm 安装angular报错‘code EEXIST‘,ERR path C:\Users\Administrator\AppData\Roaming\npm\node_modules
  6. 【深度学习小知识】ROI到ROI pooling 再到ROI Align
  7. (23)语义分割--UNet
  8. 用技术支点撬开“掘金池”,多多云能否成为中国版VMWare?
  9. python训练模型、如何得到模型训练总时长_【绝对干货】机器学习模型训练全流程!...
  10. ESP32 UART串口通信