您的位置:首页 > Web前端

finetuning caffe

2016-08-31 23:36 155 查看
还没解决,以下是解释fine-tune

比如说,先设计出一个CNN结构。
然后用一个大的数据集A,训练该CNN网络,得到网络a。
可是在数据集B上,a网络预测效果并不理想(可能的原因是数据集A和B存在一些差异,比如数据来源不同导致的代表性差异)。如果直接用B的一部分训练的话,数据量太小,CNN不适用。

解决方法:
将数据集B分为train集和test,以a网络的参数为初始参数,以较小的学习率,以B的train集为训练数据,继续训练,得到网络b。

这样,b在B的test集中一般可实现较好的预测精度。
——————————————————————————————————————————————————————————————————————————————

就是把现成的模型略加修改然后再作少量training,主要用于样本数量不足的情形。

——————————————————————————————————————————————————————————————————————————————

把已经训练过的模型应用到新的数据集上。主要优点是相比于从scratch训练能在更短时间内达到相同的效果。
例子:
1.fine-tuning: 先拿CNN在cifar100上训练,然后仅仅修改最后一层softmax的输出节点个数(100改为10),再放到cifar10上训练。
2. train from scratch: 相同结构的CNN直接用cifar10训练。
结果:
第一种情况可能只要1000次迭代就能到达60%accuracy,第二种情况需要4000次才能达到60%的accuracy.
caffe官网有fine-tuning的例子,解释更详细。

———————————————————————————————————————————————————————————————————————————————
这就是迁移学习,大概意思就是将一个任务训练好的参数直接拿到另一个任务作为他的神经网络初始参数值,然后进行训练,这样比直接随机初始化的参数精度有提高。同时可以按照自己的需求设置某一些层的参数不变。

解决了,是图像路径设置的问题,导致图像生成不正确,leveldb的train和val/test 图像序号最好从零开始,而且标签也必须是从0开始,
当 loss=87.3365时,应该适当调低学习率,0.01-0.00001中去调节,inner_product_param 中的num_output:应该为分类的数目。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: