caffe windows學習:第一個測試程序


caffe windows編譯成功后,就可以開始進行測試了。如果還沒有編譯成功的,請參考:caffe windows 學習第一步:編譯和安裝(vs2012+win 64)

一般第一個測試都是建議對手寫字體minist進行識別。這個測試放在根目錄下的 .\examples\mnist\ 文件夾內。

1、下載數據。程序本身不帶測試數據,需要去下載,測試數據為leveldb格式。你可以直接雙擊運行“get_mnist_leveldb.bat”  這個腳本自動下載數據,但一般都不成功,可能里面的網址被牆了。你可以直接到此下載:http://pan.baidu.com/s/1hry1f4g

下載好后直接解壓,得到兩個文件夾(mnist-train-leveldb和mnist-test-leveldb),將這兩個文件夾直接復制到 .\examples\mnist\  目錄下。

2、修改配置文件。該目錄下prototxt擴展名的都是配置文件。我們只需要修改lenet_solver.prototxt,用vs2012打開(也可以用記事本打開,但格式混亂,看不清楚),定位到最后一行:solver_mode: GPU,將GPU改為CPU。 如果你有GPU,這一步就可以免了。

3、運行。直接雙擊文件“train_lenet.bat”就開始運行了,很簡單吧。

 

但是原理是什么呢?  打開“train_lenet.bat”這個文件看看:

copy ..\\..\\bin\\MainCaller.exe ..\\..\\bin\\train_net.exe 
SET GLOG_logtostderr=1
"../../bin/train_net.exe" lenet_solver.prototxt
pause

這個腳本程序其實很簡單,只有四行:

第一行:將根目錄下的bin文件夾里面的MainCaller.exe復制一份,並重命名為train_net.exe

第二行:設置glog日志。glog是google 出的一個C++輕量級日志庫,介紹請看 glog

第三行:運行train_net.exe,並帶一個參數lenet_solver.prototxt(即我們剛才修改的配置文件)

第四行:測試完后,暫停。

MainCaller.exe是整個程序的入口,由它來調用其它的測試。我們打開對應的MainCaller.cpp文件(examples目錄下),發現只有這么一行代碼:

#include "../../tools/train_net.cpp"

即是去調用執行train_net.cpp文件。

打開打tools下的train_net.cpp,熟悉的main函數就出來了

#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]);  //用第一個參數來初始化日志
  ::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;  //創建測試參數對象
  ReadProtoFromTextFileOrDie(argv[1], &solver_param);  //讀取具體的參數配置 

  LOG(INFO) << "Starting Optimization";   //打印日志信息
  SGDSolver<float> solver(solver_param);  //開始優化
  //根據調用時,是否帶第三個參數,進行不同的測試
  if (argc == 3) {
    LOG(INFO) << "Resuming from " << argv[2];
    solver.Solve(argv[2]);
  } else {
    solver.Solve();
  }
  LOG(INFO) << "Optimization Done.";  //優化結束,打印日志信息

  return 0;
}

整個minist手寫數字識別過程需要迭代10000次,識別精度會有99%以上。

如果你只是想看看caffe是否編譯成功,不需要迭代那么多次,你可以修改lenet_solver.prototxt配置文件,定位到max_iter: 10000這一行,修改成你想要的迭代次數就行了。

我迭代1000次的結果如下:

屏幕上顯示的這些,都是打印的glog日志信息,從左至右大致是:日期 時間 執行文件] 執行信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM