神經網絡中,我們通過最小化神經網絡來訓練網絡,所以在訓練時最后一層是損失函數層(LOSS),
在測試時我們通過准確率來評價該網絡的優劣,因此最后一層是准確率層(ACCURACY)。
但是當我們真正要使用訓練好的數據時,我們需要的是網絡給我們輸入結果,對於分類問題,我們需要獲得分類結果,如下右圖最后一層我們得到
的是概率,我們不需要訓練及測試階段的LOSS,ACCURACY層了。
下圖是能過$CAFFE_ROOT/python/draw_net.py繪制$CAFFE_ROOT/models/caffe_reference_caffnet/train_val.prototxt , $CAFFE_ROOT/models/caffe_reference_caffnet/deploy.prototxt,分別代表訓練時與最后使用時的網絡結構。
我們一般將train與test放在同一個.prototxt中,需要在data層輸入數據的source,
而在使用時.prototxt只需要定義輸入圖片的大小通道數據參數即可,如下圖所示,分別是
$CAFFE_ROOT/models/caffe_reference_caffnet/train_val.prototxt , $CAFFE_ROOT/models/caffe_reference_caffnet/deploy.prototxt的data層
訓練時, solver.prototxt中使用的是rain_val.prototxt
./build/tools/caffe/train -solver ./models/bvlc_reference_caffenet/solver.prototxt
使用上面訓練的網絡提取特征,使用的網絡模型是deploy.prototxt
./build/tools/extract_features.bin models/bvlc_refrence_caffenet.caffemodel models/bvlc_refrence_caffenet/deploy.prototxt