(最近導師急哄哄的讓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檔案等,以後盡量用體現本次試驗個性及功能的單詞命名,各檔名要盡量一致,避免事後難以將系列檔案對上號(頭大);
Caffe 學習系列
學習列表 google protocol buffer在windows下的編譯 caffe windows 學習第一步 編譯和安裝 vs2012 win 64 caffe windows學習 第乙個測試程式 caffe學習系列 1 安裝配置ubuntu14.04 cuda7.5 caffe cudn...
caffe系列之啟用函式
1 sigmoid layer 2 relu retified linear and leaky relu 可選引數 negative slope 預設為0。對標準的relu函式進行變化,如果設定了這個值,那麼資料為負數時,就不再設定為0,而是原始資料乘以negative slope。layer r...
caffe學習系列 層解讀
層型別 accuracy layer 可以看到,caffe中計算accuracy時,是通過比較最後乙個全連線層 神經元個數 類別數 但沒有加入activation function 的輸出和資料集的labels來得到的,計算過程在accuracylayer中實現 我也一直非常困惑,計算accurac...