caffe学习笔记3.3--Loss
来源:互联网 发布:电脑txt小说编辑软件 编辑:程序博客网 时间:2024/04/30 11:25
与大多数的机器学习算法一样,caffe的学习也是由loss function驱动的(或者叫error,cost,objective function)。损失函数的目标是,将参数(就是网络中的权值和偏置)映射到一个能够度量参数“不好程度”的标量中,因此,其目标就是让这个标量最小化(其实就是调整参数,是的损失函数的值最小)。
在caffe中,通过前向传播计算损失,每一层由一系列的输入(bottom)blobs产生一系列的输出(top),某些层的输出可以用于损失函数,一类典型的多分类任务的损失函数是SoftmaxWithLoss
函数,其定义如下:
layer { name: "loss" type: "SoftmaxWithLoss" bottom: "pred" bottom: "label" top: "loss"}在
SoftmaxWithLoss
函数中,top blob是一个标量值,它是整个mni-batch损失的平均值(由预测标签和真实标签计算得到)Loss weights
如果一个网络由多个层可以产生损失(比如,一个网络使用SoftmaxWithLoss
对输入数据分类,同时也使用EuclideanLoss
层重构网络), loss weights可以用来给定两个损失的重要性.按惯例 , caffe中后缀为loss的层均用于损失函数, 其他层单纯的用于中间计算。但是,可以通过添加一个loss_weight: <float>
字段将任意层定义为一个loss。对于后缀为loss的层,该层的第一个top blob的loss_weight默认为1,其余层默认为0。因此上面的SoftmaxWithLoss
层的定义等价于:
layer { name: "loss" type: "SoftmaxWithLoss" bottom: "pred" bottom: "label" top: "loss" loss_weight: 1}
但是,对于能反向传播的层,可以给定一个非0的loss_weight,例如,如果需要,正则化网络中某些层的中间值。对于有关联损失的非孤立的输出,其损失可以简单通过所有blob的求和计算的出
caffe中整个网络的损失可以通过对整个权值损失求和得到,其伪代码如下:
loss := 0for layer in layers: for top, loss_weight in layer.tops, layer.loss_weights: loss += loss_weight * sum(top)
参考资料:
http://caffe.berkeleyvision.org/tutorial/loss.html
0 0
- caffe学习笔记3.3--Loss
- 【caffe学习笔记】loss layer 损失层
- Caffe学习:Loss
- Caffe学习:Loss
- Caffe学习:Loss
- DL学习笔记【11】caffe参数调节-loss层
- caffe学习笔记(七)绘制accrucy和loss
- caffe 学习笔记之ubuntu下绘制loss&accuracy 曲线
- 深度学习之caffe Loss
- caffe层笔记系列Loss层
- caffe loss
- caffe loss
- caffe loss
- Caffe loss
- 学习Caffe(四)Loss Layer解析
- caffe学习 绘制loss和accuracy
- caffe学习笔记-深度网络优化过程中loss=nan
- caffe中loss函数代码分析--caffe学习(16)
- HttpClient模拟get,post请求并发送请求参数(json等)
- vs2008下win32 dll封装笔记
- Delphi 编写ActiveX控件(OCX控件)的知识和样例
- Unity相机参数详解,easy point ,just Incase of forget
- java 串口通信
- caffe学习笔记3.3--Loss
- linux下安装Redis
- android studio 中导入 已经建好的aidl
- 《Motion Design for iOS》(三)
- HTML&CSS基础
- Oracle EBS中订单登记后,发放销售订单以便挑库时,找不到相应的销售订单
- Servlet的API(一)
- synchronize类锁和对象锁详解
- printf标准输出,右对齐