caffe学习系列之关于实验的一些总结

(最近导师急哄哄的让10天之内赶出一篇论文,就大大加快了实验的力度,但是情急之下各种失误不知道重头再来了多少次。。)
本人做的实验是关于表情分类识别的,下面一些机械试验中的几点总结。

1.关于卷积网络的输入:

我试验需要两个网络的融合(某fc层特征拼接),之前两个子网络的训练数据输入格式分别为lmdb,hdf5,着急两个网络融合后该怎么一对一的输入,最后采用hdf5的格式,hdf5格式的输入支持多top,我实验的hdf5结构为data1(64*64),data2(1*102),label;data1为subnet1的输入,data2为subnet2的输入;
(最开始实验时,融合后的网络我依然用的两种数据格式作为输入,实验也能跑的通,我觉得只要batchsize大小一致,数据也对应,应该也行得通;只不过我很难保证两者输入一一对应,所以又采用了上述格式的输入)

3.关于用已有模型初始化网络参数

caffe是支持多模型初始化网络参数的,中间用逗号隔开,要初始化的参数层名要与caffemodel中名字相同:

#!/usr/bin/env sh
/home/hsm/project/facialexpress/caffe/build/tools/caffe train --solver  /home/hsm/project/facialexpress/ensemble_net/fusion_solver.prototxt --weights /home/hsm/project/facialexpress/convnet1/res_train/1fold_net1_iter_8000.caffemodel,/home/hsm/project/facialexpress/convnet2/res_train_kfold_accu/1fold_accu_iter_30000.caffemodel --gpu 0 2>&1 | tee /home/hsm/project/facialexpress/ensemble_net/Log/4fusion_nor_hdf.log

2.关于融合训练过程中的一些现象:

1)出现很快accuracy不再上升,loss值又很小的情况:
原因:训练数据集太小;后来证明数据大多没写进去hdf5,导致实际输入仅为预期的1/9;
2)accuracy为1,loss值正常情况;
说明网络训练正常,但验证数据精度的数据集与训练集数据有重叠;
(我的数据集就比较小,但凡有重叠,验证的accuracy就会极高)
caffe 下与loss相关的一些说明:
1 train loss 不断下降,test loss 不断下降,说明网络正在学习
2 train loss 不断下降,test loss 趋于不变,说明网络过拟合
3 train loss 趋于不变,test loss 趋于不变,说明学习遇到瓶颈,需要减小学习率或者批处理大小
4 train loss 趋于不变,test loss 不断下降,说明数据集100%有问题
5 train loss 不断上升,test loss 不断上升(最终变为NaN),可能是网络结构设计不当,训练超参数设置不当,程序bug等某个问题引起
6 train loss 不断上下跳动,可能引起的原因:学习率过大,或者批处理大小太小

3.关于文件管理

随着实验的进行,会需要很多次不同的输入data,网络文件prototxt,也会产生不同的输出,比如log文件、caffemodel文件等,以后尽量用体现本次试验个性及功能的单词命名,各文件名要尽量一致,避免事后难以将系列文件对上号(头大);

猜你喜欢

转载自blog.csdn.net/u012617944/article/details/78776626