第一:

可以选择在将数据转换成lmdb格式时进行打乱;

设置参数--shuffle=1;(表示打乱训练数据)

默认为0,表示忽略,不打乱。

 

打乱的目的有两个:防止出现过分有规律的数据,导致过拟合或者不收敛。

在caffe中可能会使得,在模型进行测试时,每一个测试样本都输出相同的预测概率值。

 

或者,直接打乱训练文件的标签文件:train.txt

 

方法如下:

1)将 train_160309-train.txt按行打乱,每行内容则保持不变,命令:

  1. cd 存放文件的路径  
  2. awk 'BEGIN{ 100000*srand();}{ printf "%s %s\n", rand(), $0}'   train_160309-train.txt |sort -k1n | awk '{gsub($1FS,""); print $0}'   

2)但这样处理后只是在屏幕上输出显示,如果需要将输出写入新的文本train.txt,则在末尾加上 | tee train.txt:

  1. sudo awk 'BEGIN{ 100000*srand();}{ printf "%s %s\n", rand(), $0}'   train_160309-train.txt |sort -k1n | awk '{gsub($1FS,""); print $0}' | tee train.txt  

3)如果不需要在屏幕上输出显示,直接将输出写入新的文本train.txt,则在末尾将 | tee 换作 > 即可:

  1. sudo awk 'BEGIN{ 100000*srand();}{ printf "%s %s\n", rand(), $0}'   train_160309-train.txt |sort -k1n | awk '{gsub($1FS,""); print $0}' > train.txt  

 

附:

1、awk命令详解

2、tee命令详解

 

参考:https://blog.csdn.net/u010555688/article/details/50475739