Caffee调参tips

来源:互联网 发布:python客户端接口登录 编辑:程序博客网 时间:2024/05/21 09:59

最近用到Caffee,在设计深度学习网络的时候画了一天的功夫才弄清是怎么一回事。

下面介绍点经验,或许可以帮助一些刚刚接触Caffee的同学。

我所做的实验中样本个数比较少,一共5种,每种只有50张图片,我将其30/15作为Train/Test,剩下的5种作为最终的Test。幸运的是,那个提供图片的朋友又在一个类别上多添加了15张图片。

样本很少,心里要先注意会不会过拟合。

我打算改写Mnist的例子,网络结构对测试结果有影响,但是影响不大,Mnist的两层卷积层两层池化层加上一层全连接层,一层Softmax层估计足够能够识实现一般物体的识别。关键是参数的设置。

首先,需要保证你的数据集是可分辨的,在可分辨的条件下尽量减少图片大小,这样可以每次读入更多的图片。然后开始训练,训练可能并不收敛,这个时候,最主要的是看看自己的学习率是不是很大,基本在0.01~0.001之间,对于样本数量比较少的情况下,学习率更不能太高。



上面是Loss曲线和accuracy曲线,有波动,不太清楚是否合理……

然后就是调整参数了,调整网络的参数主要是修改网络的卷积核的大小,步长,维度等等。但是并不是随意的调节,最主要的是要参考每一层的网络权重的可视化图像和随机选取一张测试图片查看在改训练模型下训练出来的数据。


上面是初步修改后的第一层卷积层和第二层卷积层的权重图,而下面是未修改前的权重图,可以看到,下面的第二层卷积层基本反应不出来什么信息了,所以识别率就很低(经测试15张图片只有9张能够识别正确,而调整之后15张图片均能够正确识别)


或许能够使用这个原理,下一步希望作出来一个可视化调节网络参数的工具,可以用于实时条件的观察。

因为图片的确很少能够用于测试的图片只有5*5+15=40张,虽然这四十张图片都能够正确识别了,但也不能说明网络识别率在100%(笑)