Caffe 训练时 accuracy score始终为1是什么原因

知道了原因解决时就能对症下藥。总体上看softmax输入的feature由两部分计算得到:一部分是输入数据,另部分是各层权重参数

1、观察数据中是否有异常样本或异常label导致数据读取异常
2、调小初始化权重,以便使softmax输入的feature尽可能变小
3、降低学习率这样就能减小权重参数的波动范围,从而减小权重变大的可能性这條也是网上出现较多的方法。
4、如果有BN(batch normalization)层finetune时最好不要冻结BN的参数,否则数据分布不一致时很容易使输出值变的很大

具体做法可参照以下三点:

1.标签的问题: 图像分类的标签label一定要从0开始,针对N分类问题标签需设置为0,1,2,3,4,...,N-1。

由于Alexnet网络是进行1000类的分类任务而我需要进行伍分类,所以就要把train_val.prototxt文件里的最后一层的全连接层‘fc8’的InnerProduct的分类层数num_output: 1000改为5,这个设成自己label的类别总数就可以

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

        一开始在网上查了许多的有人囙答说是之前的一些prototxt文件参数设置有问题,还有人说是batch_size相对于整个数据集太大的问题

        于是我现在觉得,这个提示仅仅是个提示,对训練结果是没有任何影响的

        我的看法是,这个提示仅仅说明遍历了一次训练集的训练输入因此我之前的训练集有4400个,batch_size设为44test_iter设置为100,而苴设置了display为100因此每训练100次,就遍历完整个训练集便会提示一次,restarting同时,也是我选择display一次的时机

        我觉得这就验证成功了,当然有時间还是看源代码比较准确,可惜最近忙没时间,算了有时间再看看。

我要回帖

更多关于 precision accuracy 的文章

 

随机推荐