第一:
可以選擇在將數據轉換成lmdb格式時進行打亂;
設置參數--shuffle=1;(表示打亂訓練數據)
默認為0,表示忽略,不打亂。
打亂的目的有兩個:防止出現過分有規律的數據,導致過擬合或者不收斂。
在caffe中可能會使得,在模型進行測試時,每一個測試樣本都輸出相同的預測概率值。
或者,直接打亂訓練文件的標簽文件:train.txt
方法如下:
1)將 train_160309-train.txt按行打亂,每行內容則保持不變,命令:
- cd 存放文件的路徑
- 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:
- 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 換作 > 即可:
- 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