caffe windows学习:第一个测试程序
caffe windows編譯成功后,就可以開(kāi)始進(jìn)行測(cè)試了。如果還沒(méi)有編譯成功的,請(qǐng)參考:caffe windows 學(xué)習(xí)第一步:編譯和安裝(vs2012+win 64)
一般第一個(gè)測(cè)試都是建議對(duì)手寫字體minist進(jìn)行識(shí)別。這個(gè)測(cè)試放在根目錄下的 .\examples\mnist\ 文件夾內(nèi)。
1、下載數(shù)據(jù)。程序本身不帶測(cè)試數(shù)據(jù),需要去下載,測(cè)試數(shù)據(jù)為leveldb格式。你可以直接雙擊運(yùn)行“get_mnist_leveldb.bat” ?這個(gè)腳本自動(dòng)下載數(shù)據(jù),但一般都不成功,可能里面的網(wǎng)址被墻了。你可以直接到此下載:http://pan.baidu.com/s/1hry1f4g
下載好后直接解壓,得到兩個(gè)文件夾(mnist-train-leveldb和mnist-test-leveldb),將這兩個(gè)文件夾直接復(fù)制到 .\examples\mnist\ ?目錄下。
2、修改配置文件。該目錄下prototxt擴(kuò)展名的都是配置文件。我們只需要修改lenet_solver.prototxt,用vs2012打開(kāi)(也可以用記事本打開(kāi),但格式混亂,看不清楚),定位到最后一行:solver_mode: GPU,將GPU改為CPU。 如果你有GPU,這一步就可以免了。
3、運(yùn)行。直接雙擊文件“train_lenet.bat”就開(kāi)始運(yùn)行了,很簡(jiǎn)單吧。
?
但是原理是什么呢?? 打開(kāi)“train_lenet.bat”這個(gè)文件看看:
copy ..\\..\\bin\\MainCaller.exe ..\\..\\bin\\train_net.exe SET GLOG_logtostderr=1 "../../bin/train_net.exe" lenet_solver.prototxt pause這個(gè)腳本程序其實(shí)很簡(jiǎn)單,只有四行:
第一行:將根目錄下的bin文件夾里面的MainCaller.exe復(fù)制一份,并重命名為train_net.exe
第二行:設(shè)置glog日志。glog是google 出的一個(gè)C++輕量級(jí)日志庫(kù),介紹請(qǐng)看?glog
第三行:運(yùn)行train_net.exe,并帶一個(gè)參數(shù)lenet_solver.prototxt(即我們剛才修改的配置文件)
第四行:測(cè)試完后,暫停。
MainCaller.exe是整個(gè)程序的入口,由它來(lái)調(diào)用其它的測(cè)試。我們打開(kāi)對(duì)應(yīng)的MainCaller.cpp文件(examples目錄下),發(fā)現(xiàn)只有這么一行代碼:
#include "../../tools/train_net.cpp"即是去調(diào)用執(zhí)行train_net.cpp文件。
打開(kāi)打tools下的train_net.cpp,熟悉的main函數(shù)就出來(lái)了
#include <cuda_runtime.h> #include <iostream> #include <cstring>#include "caffe/caffe.hpp"using namespace caffe; // NOLINT(build/namespaces)int main(int argc, char** argv) {::google::InitGoogleLogging(argv[0]); //用第一個(gè)參數(shù)來(lái)初始化日志::google::SetLogDestination(0, "../tmp/"); //將日志放入/tmp/文件夾下if (argc < 2 || argc > 3) {LOG(ERROR) << "Usage: train_net solver_proto_file [resume_point_file]";return 1;}SolverParameter solver_param; //創(chuàng)建測(cè)試參數(shù)對(duì)象ReadProtoFromTextFileOrDie(argv[1], &solver_param); //讀取具體的參數(shù)配置 LOG(INFO) << "Starting Optimization"; //打印日志信息SGDSolver<float> solver(solver_param); //開(kāi)始優(yōu)化//根據(jù)調(diào)用時(shí),是否帶第三個(gè)參數(shù),進(jìn)行不同的測(cè)試if (argc == 3) {LOG(INFO) << "Resuming from " << argv[2];solver.Solve(argv[2]);} else {solver.Solve();}LOG(INFO) << "Optimization Done."; //優(yōu)化結(jié)束,打印日志信息return 0; }整個(gè)minist手寫數(shù)字識(shí)別過(guò)程需要迭代10000次,識(shí)別精度會(huì)有99%以上。
如果你只是想看看caffe是否編譯成功,不需要迭代那么多次,你可以修改lenet_solver.prototxt配置文件,定位到max_iter: 10000這一行,修改成你想要的迭代次數(shù)就行了。
我迭代1000次的結(jié)果如下:
屏幕上顯示的這些,都是打印的glog日志信息,從左至右大致是:日期 時(shí)間 執(zhí)行文件] 執(zhí)行信息
總結(jié)
以上是生活随笔為你收集整理的caffe windows学习:第一个测试程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: caffe windows 学习第一步:
- 下一篇: Caffe学习系列(1):安装配置ubu