欢迎使用CSDN-markdown编辑器
2017-06-09 17:24
218 查看
一、进行fine-tune时需要注意的地方:
ImageNet原来是1k个类别,finetune时需要根据自己数据集的类别数重新设置fc8层的output数,且新的fc8层的blob_lr会设的大一些(比如10和20),是为了加快收敛。如果你的网络中某一层的的参数个数变了,例如AlexNet全连接层输出为1000个,而你的网络只需要做2分类也就是输出两个值,那一定要把该层的 name 换一下,不然caffe 在 finetune 源网络的weight 的时候发现维度不匹配会报错的。
自己数据集的类别号从0开始,中间要连续(我师弟有次finetune数据集一直报错,后来发现他是二类分类,但是类别号设成了0和12)
数据集记得打乱,不然很可能不收敛,这可以使用文本行打乱小工具。
如果出现不收敛的问题,可以把solver里的lr设的小一点,一般从0.001开始,如果出现loss=nan了就不断往小调整
可以把accuracy和loss的曲线画出来,方便设定stepsize,一般在accuracy和loss都趋于平缓的时候就可以减小lr了
上面的是方法是经过大神们总结的经验,具体可以参考caffe工程examples\finetune_flickr_style里的一个readme.md说明文档。它的那个例子的准确度比较低。不过一般使用到别的比较好的地方则准确率会很高。
其中fine-tune在进行修改输出分类值时一般需要重命名层的名字,否则在加载时会报维度不同的错误。修改后caffe模型会忽略名字不同的层。caffe的一些知识点
1、caffe在内存上进行的一些操作。其体现在train_val.prototxt文件定义上。其中的一小段代码是:layer { name: "relu1" type: "ReLU" bottom: "conv1" top: "conv1" } layer { name: "pool1" type: "Pooling" bottom: "conv1" top: "pool1" pooling_param { pool: MAX kernel_size: 3 stride: 2 } }
其中的relu1层由于是元素级的操作,其是通过现场本地激活来节省内存,所以其
bottom和top都是“conv1”层。
相关文章推荐
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器ss
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器