caffe 进行自己的imageNet训练分类:loss一直是87.3365,accuracy一直是0

caffe 进行自己的imageNet训练分类:

loss一直是87.3365,accuracy 一直是0,可能的原因是:

解决方法: http://blog.csdn.net/jkfdqjjy/article/details/52268565?locationNum=14
知道了原因,解决时就能对症下药。总体上看,softmax输入的feature由两部分计算得到:一部分是输入数据,另部分是各层权重参数。 
1、观察数据中是否有异常样本或异常label导致数据读取异常 
2、调小初始化权重,以便使softmax输入的feature尽可能变小 
3、降低学习率,这样就能减小权重参数的波动范围,从而减小权重变大的可能性。这条也是网上出现较多的方法。 
4、如果有BN(batch normalization)层,finetune时最好不要冻结BN的参数,否则数据分布不一致时很容易使输出值变的很大。

http://blog.csdn.net/hyqsong/article/details/51933255

  1. 标签的问题:

imagelist中,图像分类的标签label一定要从0开始,

  • 分类层的 num_output 和 标签的值域 不符合:

    a. 要知道imagenet是进行1000类的分类任务,我自己的数据是一个二分类,就一定要把最后‘fc8’InnerProduct的分类层的num_output: 2原来是1000,这个设成自己label的类别总数就可以。 
    b. 但是注意同时要修改train.prototxt和deploy.prototxt两个网络配置文件中的num_output

  • 可能是学习率太高了 

    另外如果是最初的迭代的loss很小,然后突然变成87.3365?如果是这样,可以尝试一下调低学习率,我开始学习率是0.1,后来调成了0.001,反正就是调小,可以多试几次。

时间: 2024-12-22 11:58:13

caffe 进行自己的imageNet训练分类:loss一直是87.3365,accuracy一直是0的相关文章

【caffe】用训练好的imagenet模型分类图像

因为毕设需要,我首先是用ffmpeg抽取某个宠物视频的关键帧,然后用caffe对这个关键帧中的物体进行分类. 1.抽取关键帧的命令: E:\graduation design\FFMPEG\bin>ffmpeg -i .\3.mp4 -vf select='eq(pict_type\,I)',setpts='N/(25*TB)' .\%09d.jpg 2.用python编写脚本,利用在imagenet上训练的模型分类视频帧中的物体. 抽取得到的视频关键帧都存放在文件夹"/home/suns

使用caffe提供的python接口训练mnist例子

1 首先肯定是安装caffe,并且编译python接口,如果是在windows上,最好把编译出来的python文件夹的caffe文件夹拷贝到anaconda文件夹下面去,这样就有代码自动提示功能,如下: 本文中使用的ide为anaconda安装中自带的spyder,如图所示,将根目录设置为caffe的根目录. import caffe caffe.set_mode_cpu() solver = caffe.SGDSolver('examples/mnist/lenet_solver.protot

caffe学习记录(五) SSD训练+SSDpelee测试

SSD就不多介绍了,是今年非常流行的Object detection 模型:对各大数据集的测试结果如下表. 首先要git weiliu版本的caffe git clone https://github.com/weiliu89/caffe.git 然后在unbantu上对caffe进行配置,百度一下教程 # Modify Makefile.config according to your Caffe installation. cp Makefile.config.example Makefil

分类指标准确率(Precision)和正确率(Accuracy)的区别

http://www.cnblogs.com/fengfenggirl/p/classification_evaluate.html 一.引言 分类算法有很多,不同分类算法又用很多不同的变种.不同的分类算法有不同的特定,在不同的数据集上表现的效果也不同,我们需要根据特定的任务进行算法的选择,如何选择分类,如何评价一个分类算法的好坏,前面关于决策树的介绍,我们主要用的正确率(accuracy)来评价分类算法. 正确率确实是一个很好很直观的评价指标,但是有时候正确率高并不能代表一个算法就好.比如某个

keras model.compile(loss='目标函数 ', optimizer='adam', metrics=['accuracy'])

目录 目标函数 1.mean_squared_error 2. mean_absolute_error 3.mean_absolute_percentage_error 4. mean_squared_logarithmic_error 5.squared_hinge 6.hinge 7.binary_crossentropy 8.categorical_crossentropy 参考: 目标函数 目标函数,或称损失函数,是网络中的性能函数,也是编译一个模型必须的两个参数之一.由于损失函数种类众

将caffe训练时loss的变化曲线用matlab绘制出来

1. 首先是提取 训练日志文件; 2. 然后是matlab代码: clear all; close all; clc; log_file = '/home/wangxiao/Downloads/43_attribute_baseline.log'; fid = fopen(log_file, 'r'); fid_accuracy = fopen('/home/wangxiao/Downloads/output_accuracy.txt', 'w'); fid_loss = fopen('/hom

caffe使用自己的数据做分类

这里只举一个例子: Alexnet网络训练自己数据的过程 用AlexNet跑自己的数据 参考1:http://blog.csdn.net/gybheroin/article/details/54095399 参考2:http://www.cnblogs.com/alexcai/p/5469436.html 1,准备数据: 在caffe根目录下data文件夹新建一个文件夹,名字自己起一个就行了,我起的名字是food,在food文件夹下新建两个文件夹,分别存放train和val数据, 在train文

Caffe下自己的数据训练和测试

在caffe提供的例程当中,例如mnist与cifar10中,数据集的准备均是通过调用代码自己完成的,而对于ImageNet1000类的数据库,对于高校实验室而言,常常面临电脑内存不足的尴尬境地.而对于应用者而言,用适合于自己条件的的数据集在caffe下训练及测试才是更重要的.所以我们有必要自己做数据库以及在caffe上训练及测试. 1,数据准备 在data中新建文件夹myself,我们截取了ImageNet1000类中的两类-panda与sea_horse,训练panda的图片24张,测试pa

caffe:用自己的数据训练网络mnist

画黑底白字的软件:KolourPaint. 假设所有"1"的图片放到名字为1的文件夹下.(0-9类似)..获取每个数字的名称文件后,手动表上标签.然后合成train.txt 1.获取文件夹内全部图像的名称: find ./1 -name '*.png'>1.txt //此时的1.txt文件中的图像名称包括路劲信息,要把前面的路径信息去掉. $ sudo sed -i "s/.\/1\///g" 1.txt          //(\表示转义,所以这里用双引号而