在訓練backbone為mobilenet的模型的時候,發現訓練過程中每個迭代所需要的時間都很長,於是考慮使用測試工具測試每層所需要的時間,來排查原因.
其中caffe自帶的net_speed_benchmark工具已經被棄用了
deprecated. use caffe time --model=... "
"[--iterations=50] [--gpu] [--device_id=0]
被指明使用caffe的time指令來評估每層時間,如同上面的資訊,只需要乙個訓練網路的prototxt檔案,然後程式預設進行50個迭代的前傳反傳的計算,然後給出平均的每層所需的時間
這裡需要設定-gpu,否則預設是使用cpu計算的
第一次我沒加-gpu 0的引數,測試mobilenet的時間
平均下來每個forward-backward所需要的時間為2392.66 ms
發現是dwconv相關層的前傳和反傳所需要的時間都遠多於其他層,
conv4_1/3x3_dwconv forward: 28.8052 ms.
conv4_1/3x3_dwconv backward: 59.1912 ms.
使用time --model=... -gpu 0
之後,執行時間明顯提高了
iteration: 1 forward-backward time: 12859.3 ms.
iteration: 2 forward-backward time: 42.453 ms.
iteration: 3 forward-backward time: 41.3635 ms.
iteration: 4 forward-backward time: 39.9391 ms.
iteration: 5 forward-backward time: 39.9155 ms.
iteration: 6 forward-backward time: 40.8156 ms.
iteration: 7 forward-backward time: 40.0486 ms.
iteration: 8 forward-backward time: 38.0232 ms.
iteration: 9 forward-backward time: 38.5423 ms.
除了第乙個iteration消耗比較多的時間之外,後續的迭代都很快
conv4_1/3x3_dwconv forward: 0.0745062 ms.
conv4_1/3x3_dwconv backward: 0.75477 ms.
caffe執行自帶的mnist
sh data mnist get mnist.sh但是這些檔案是不能夠直接使用的,因此 sh examples mnist create mnist.sh轉換為lmdb檔案,轉換之後會在examples mnist下面還是生成 mnist train lmdb mnist test lmdb 裡面...
使用Caffe自帶工具繪製loss曲線
修改訓練命令為 python solve.py 2 1 tee out.log用 caffe 自帶的指令碼繪製 loss 曲線 將 caffe tools extra目錄下的plot training log.py.example,extract seconds.py,parse log.sh,pa...
可替代VB自帶的Timer控制項的Timer類
宣告 魏滔序原創,轉貼請註明出處。用這個類可以替代vb自帶的timer控制項,這樣就不用在無窗體的專案中僅為了使用timer而多加乙個窗體了。我一般用在activex exe中用來分離系統控制權,用timer的好處是避免控制權死鎖,這樣也就模擬出了多執行緒 實際上是多程序 能給使用者更好的體驗。如下...