alex krizhevsky的cuda-convnet詳細介紹了模型定義,引數和培訓程式,以便在cifar-10上獲得良好的效能。這個例子再現了他在caffe的結果。
我們將假設你已經成功編譯了caffe。如果沒有,請參閱安裝頁面。在本教程中,我們假設您的caffe安裝位於caffe_root
。
我們感謝@chyojn定義模型模式和求解器配置的pull請求。
這個例子是乙個正在進行的工作。這將是很高興進一步解釋網路和培訓選擇的細節和基準的全面培訓。
cd $caffe_root
./data/cifar10/get_cifar10.sh
./examples/cifar10/create_cifar10.sh
如果它抱怨wget
或gunzip
沒有安裝,你需要分別安裝它們。執行指令碼後應該有資料集./cifar10-leveldb
,和資料集影象的意思./mean.binaryproto
。
cifar-10模型是乙個cnn,它包括卷積,合併,整流線性單位(relu)非線性的層,以及區域性對比度歸一化,在其頂部的線性分類器。我們已經在caffe_root/examples/cifar10
目錄中定義了模型cifar10_quick_train_test.prototxt
。
在編寫網路定義protobuf和solver protobuf檔案(參見mnist教程)之後,訓練模型很簡單。只需執行train_quick.sh
,或直接執行以下命令:
cd $caffe_root
./examples/cifar10/train_quick.sh
train_quick.sh
是乙個簡單的指令碼,所以看看裡面。培訓的主要工具是caffe
與train
行動,並求解protobuf的文字檔案作為其引數。
當你執行**,你會看到很多訊息飛行像這樣:
i0317 21:52:48.945710 2008298256 net.cpp:74] creating layer conv1
i0317 21:52:48.945716 2008298256 net.cpp:84] conv1 <- data
i0317 21:52:48.945725 2008298256 net.cpp:110] conv1 -> conv1
i0317 21:52:49.298691 2008298256 net.cpp:125] top shape: 100 32 32 32 (3276800)
i0317 21:52:49.298719 2008298256 net.cpp:151] conv1 needs backward computation.
這些訊息告訴您每個層,其連線和其輸出形狀的詳細資訊,這可能有助於除錯。初始化後,訓練將開始:
i0317 21:52:49.309370 2008298256 net.cpp:166] network initialization done.
i0317 21:52:49.309376 2008298256 net.cpp:167] memory required for data 23790808
i0317 21:52:49.309422 2008298256 solver.cpp:36] solver scaffolding done.
i0317 21:52:49.309447 2008298256 solver.cpp:47] solving cifar10_quick_train
基於求解器設定,我們將每100次迭代列印訓練損耗函式,並且每500次迭代測試網路。您將看到如下訊息:
i0317 21:53:12.179772 2008298256 solver.cpp:208] iteration 100, lr = 0.001
i0317 21:53:12.185698 2008298256 solver.cpp:65] iteration 100, loss = 1.73643
...i0317 21:54:41.150030 2008298256 solver.cpp:87] iteration 500, testing net
i0317 21:54:47.129461 2008298256 solver.cpp:114] test score #0: 0.5504
i0317 21:54:47.129500 2008298256 solver.cpp:114] test score #1: 1.27805
對於每個訓練迭代,lr
是該迭代的學習速率,並且loss
是訓練函式。對於測試階段的輸出,得分0是準確度,得分1是測試損失函式。
在給自己一杯咖啡後,你就完成了!
i0317 22:12:19.666914 2008298256 solver.cpp:87] iteration 5000, testing net
i0317 22:12:25.580330 2008298256 solver.cpp:114] test score #0: 0.7533
i0317 22:12:25.580379 2008298256 solver.cpp:114] test score #1: 0.739837
i0317 22:12:25.587262 2008298256 solver.cpp:130] snapshotting to cifar10_quick_iter_5000
i0317 22:12:25.590215 2008298256 solver.cpp:137] snapshotting solver state to cifar10_quick_iter_5000.solverstate
i0317 22:12:25.592813 2008298256 solver.cpp:81] optimization done.
我們的模型實現了〜75%的測試精度。模型引數以二進位制protobuf格式儲存
cifar10_quick_iter_5000
這是準備部署在cpu或gpu模式!請參閱caffe_root/examples/cifar10/cifar10_quick.prototxt
可在新資料上呼叫的部署模型定義。
cifar-10,雖然仍然很小,有足夠的資料使gpu訓練有吸引力。
要比較cpu和gpu訓練速度,只需更改一行cifar*solver.prototxt
:
# solver mode: cpu or gpu
solver_mode: cpu
你將使用cpu進行培訓。
NSURLConnection蘋果官方文件
這篇文章是翻譯的蘋果官方文件,想要看英文原版的可以到蘋果 檢視 也提供了乙個簡單的介面去建立和放棄連線,同時使用很多的delegate 方法去支援連線過程的反饋和控制 如何建立乙個連線呢?connection didreceiveresponse conncetion didreceivedata,...
ArcGIS10官方教程
編輯教程 練習1 總結 1.數位化的時候,要素構造 工具可通過按 tab 鍵來調整位置.1b 2.可為字段設定預設值.1c 3.f6 絕對xy f2 完成草圖 d 方向 w 寬度 l 長度 1d 4.畫面圖層的時候,建立要素 中最下面有個 自動完成面 工具,可以通過封閉直接生成面要素.1d 編輯教程...
007 ArcGIS10官方教程
編輯教程 練習1 總結 1.數位化的時候,要素構造 工具可通過按 tab 鍵來調整位置.1b 2.可為字段設定預設值.1c 3.f6 絕對xy f2 完成草圖 d 方向 w 寬度 l 長度 1d 4.畫面圖層的時候,建立要素 中最下面有個 自動完成面 工具,可以通過封閉直接生成面要素.1d 編輯教程...