caffe学习小问题(1):caffe中的Accuracy
来源:互联网 发布:入骨相思知不知好看吗 编辑:程序博客网 时间:2024/05/17 02:23
今天才偶然发现,caffe在计算Accuravy时,利用的是最后一个全链接层的输出(不带有acitvation function),比如:alexnet的train_val.prototxt、caffenet的train_val.prototxt
下图是这两个网络训练配置文件(prototxt文件)计算Accuray的配置文件截图的截图(对于该部分,alexnet和caffenet是一致的)
- 最后一个全连接层
layer { name: "fc8" type: "InnerProduct" bottom: "fc7" top: "fc8" param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } inner_product_param { num_output: 1000 weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } }}
- 计算Accuracy
layer { name: "accuracy" type: "Accuracy" bottom: "fc8" bottom: "label" top: "accuracy" include { phase: TEST }}
可以看到,caffe中计算Accuracy时,是通过比较最后一个全连接层(神经元个数=类别数、但没有加入activation function)的输出和数据集的labels来得到的,计算过程在AccuracyLayer中实现
之前一直非常困惑,计算accuracy应该使用计算得到的labels与数据集真正的labels去做计算,为什么caffe的accuracy要将fc8接入Accuray层呢?通过简单查看AccuracyLayer的说明才发现,原来,在AccuracyLayer内部,实现了“利用fc8的输出得到数据集的预测labels”(数值最大的那个值得idnex就是样本的类别),那么,再与输入的数据集真实lebels作对比,就实现了accuray的计算!
实际上,如果仅仅是做预测,利用fc8的输出就够了(输出值最大的那个位置即为输入的label),该输出表示了输入的样本属于每一类的可能性大小,但并不是概率值;
如果为了使输出具有统计意义,需要加入softmax function,它只是使前面的全连接层的输出(fc8)具有了概率意义,并不改变这些输出之前的大小关系,因为softmax function本身就是增函数;
为了利用误差反向传播,还需要构造loss function,需要利用softmax function的输出,即需要利用输入样本属于每一类的概率值;
注意:
最后一个全连接层(fc8)的输出值位于区间
[−∞,∞] ,它并不是概率值fc8后面接的SoftmaxWithLoss层做的工作分2步
- 第一步:对fc8的输出计算softmax function(结果为概率值)
- 第二步:利用求得的概率值计算Loss值
- caffe学习小问题(1):caffe中的Accuracy
- caffe学习小问题(1):caffe中的Accuracy
- caffe学习小问题(1):caffe中的Accuracy
- caffe中的Accuracy
- caffe accuracy 学习
- caffe中的loss和accuracy曲线
- caffe学习 绘制loss和accuracy
- Caffe学习:绘制loss和accuracy曲线(使用caffe工具包)
- Caffe学习:绘制loss和accuracy曲线(使用caffe的python接口)
- caffe小问题汇总(持续更新) PS:所有问题均在caffe-windows下产生 1、为什么AlexNet中,InnerProduct_Layer(fc8)层的输出可以直接作为Accuracy
- caffe Accuracy.cpp
- 关于caffe安装中的一些小问题
- 关于caffe安装中的一些小问题
- Caffe学习笔记1:初识caffe篇(caffe介绍)
- caffe学习(1)
- caffe小显存问题
- Caffe如何画出训练中的loss曲线图和accuracy曲线图
- caffe绘制训练过程中的accuracy、loss曲线
- UITextView内容垂直居中
- 修改android-自定义控件-悬浮控件-仿360手机助手应用详情页
- 9 patch png 的上下左右
- Android自定义弹窗——右上角悬浮关闭
- 再探Java抽象类与接口的设计理念差异
- caffe学习小问题(1):caffe中的Accuracy
- HDU1249
- Eclipse+tomcat+maven 配置Spring mvc图文教程
- java当中获取各个路径的方法
- 关于Java的动态代理的初步理解
- 作用域和生命周期
- JS对象高级属性:数据属性与访问器属性
- ViewPager无限轮播+自定义小圆点+ListView展示
- Android 避免APP启动闪黑屏的解决办法(Theme和Style)