使用caffe框架進行深度學習訓練的流程如下:
1、資料預處理(建立資料庫)
2、網路結構與模型訓練的配置
3、訓練與再訓練
4、訓練日誌分析
5、**檢驗與分析
6、效能測試
下面分別來分析各個流程的處理過程:
1、資料預處理(建立資料庫)
2、網路結構與模型訓練的配置
caffe採用讀入配置檔案的方式進行訓練,其配置檔案一般由兩部分組成:solver.prototxt和net.prototxt(有時有多個net.prototxt),分別對應caffe系統架構中兩個十分關鍵的實體——求解器(solver)和網路結構(net)。
下面講解一下相對簡單的solver.prototxt檔案:
#網路配置的位置
net:
"examples/mnist/net.prototxt"
#要使用gpu進行訓練
solver_mode: gpu
#本次訓練共迭代5000次
max_iter:
5000
#測試每500輪跑一遍,一遍跑100個迭代
test_iter:
100test_interval:
500#每50次輸出一些資訊
display:
50#基礎的學習速率為0.01
base_lr:
0.01
lr_policy:
"step"
gamma:
0.1stepsize:
50000
#動量衰減率是0.9,正則項的權重是0.0005
momentum:
0.85
weight_decay:
0.0005
#每1000輪儲存一下進度
snapshot:
1000
snapshot_prefix:
"examples/mnist/net_train"
基本回答了以下幾個問題:
(1)網路檔案在哪
(2)用什麼計算資源訓練?cpu還是gpu?
(3)訓練多久?訓練和測試比例是如何安排的?什麼時候輸出一些東西?
(4)優化的學習速率怎麼設定?動量和正則的設定
(5)要時刻記得存檔,不然得從頭來過。
net.prototxt檔案說明
name: "lenet" 網路名
layer
transform_param
data_param
}layer
transform_param
data_param
}layer
param
convolution_param
bias_filler
}}layer
}layer
param
convolution_param
bias_filler
}}layer
}layer
param
inner_product_param
bias_filler
}}layer
layer
param
inner_product_param
bias_filler
}}layer
}layer
caffe提供了一套介面,net.prototxt檔案可通過寫**生成。
3、訓練與再訓練
準備好了資料,確定了訓練相關的配置,就可以正式訓練了。啟動訓練指令碼train_lenent.sh,經過一段時間的訓練,命令列產生了大量的日誌訓練過程也宣告結束,這時目錄中多了如下目錄:
net_train_iter_1000.caffemodel
net_train_iter_1000.solverstate
…… caffemodel檔案中儲存了caffe模型中的引數,solverstate檔案中儲存了訓練過程中的一些中間結果。
再訓練包含兩種模式:
(1)斷點訓練,solverstate中儲存了訓練的歷史資訊,這些資訊能夠幫助模型繼續訓練;
(2)遷移學習,這個模式會在之前訓練的基礎上,對模型結構做一定的修改,然後應用到其他模型中,這種模式稱為遷移學習。
4、訓練日誌分析
5、**檢驗與分析
模型完成訓練後,要對它的訓練表現做驗證,看它在其他測試資料上的正確性。除此之外,還可以將每一層的中間結果視覺化出來,進行分析。
6、效能測試
除了測試資料上的準確率,模型的執行時間也非常值得關心。
以上就是在caffe上訓練資料的整個過程。
參考《深度學習輕鬆學》
深度學習框架caffe訓練過程
1.資料準備 2.生成訓練資料和測試資料的label,生成 3.生成訓練資料和測試資料對應的lmdb build tools convert imageset shuffle true backend lmdb data cigarettetrain20170413 data cigarettetr...
caffe 進行卷積神經網路訓練的命令引數解析
因為在用imagenet訓練alexnet時,發現準確率不是很高,就想通過調參後從快照 snapshot 中恢復訓練 就查到了這篇詳細的訓練命令引數的文章,遂轉之,備查用 別人的部落格 caffe的執行提供三種介面 c 介面 命令列 python介面和matlab介面。本文先對命令列進行解析,後續會...
使用caffe訓練好的模型進行分類 官網教程
coding utf 8 import numpy as np import matplotlib.pyplot as plt matplotlib inline import sys reload sys sys.setdefaultencoding utf8 設定預設顯示引數 plt.rcpar...