Skip to content

Instantly share code, notes, and snippets.

@pierric
Last active July 17, 2017 10:27
Show Gist options
  • Save pierric/d498f4a996238ab3ba3aca8e55b84ad8 to your computer and use it in GitHub Desktop.
Save pierric/d498f4a996238ab3ba3aca8e55b84ad8 to your computer and use it in GitHub Desktop.
A minimal caffe app - mnist
CAFFEDIR=../caffe/cppbuild/linux-x86_64
OPENCVDIR=../opencv/cppbuild/linux-x86_64
INCDIR=${CAFFEDIR}/include
LINKOPTS=-L${CAFFEDIR}/lib -L${CAFFEDIR}/caffe-rc3/build/lib -lboost_system -lboost_thread -lgflags -lglog -lleveldb -llmdb -lopenblas -lprotobuf -lsnappy -lcaffe -lboost_filesystem -pthread -lpthread -L${OPENCVDIR}/lib -lopencv_core -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc
train: train.cpp
g++ -o train -DCPU_ONLY -I${INCDIR} train.cpp ${LINKOPTS}
run: train
LD_LIBRARY_PATH=${CAFFEDIR}/lib:${OPENCVDIR}/lib ./train
dataset:
/PATH/convert_mnist_data.bin /PATH-to-MNIST-DATA/train-images-idx3-ubyte /PATH-to-MNIST-DATA/train-labels-idx1-ubyte model/mnist_train_lmdb --backend=lmdb
/PATH/convert_mnist_data.bin /PATH-to-MNIST-DATA/t10k-images-idx3-ubyte /PATH-to-MNIST-DATA/t10k-labels-idx1-ubyte model/mnist_test_lmdb --backend=lmdb
#include <gflags/gflags.h>
#include <glog/logging.h>
#include <cstring>
#include <map>
#include <string>
#include <vector>
#include "boost/algorithm/string.hpp"
#include "caffe/caffe.hpp"
#include "caffe/util/signal_handler.h"
using caffe::Blob;
using caffe::Caffe;
using caffe::Net;
using caffe::Layer;
using caffe::Solver;
using caffe::shared_ptr;
using caffe::string;
using caffe::Timer;
using caffe::vector;
using std::ostringstream;
// Train / Finetune a model.
int main() {
caffe::SolverParameter solver_param;
caffe::ReadSolverParamsFromTextFileOrDie("model/lenet_solver.prototxt", &solver_param);
solver_param.mutable_train_state()->set_level(0);
Caffe::set_mode(Caffe::CPU);
caffe::SignalHandler signal_handler(
caffe::SolverAction::STOP,
caffe::SolverAction::SNAPSHOT);
shared_ptr<caffe::Solver<float> >
solver(caffe::SolverRegistry<float>::CreateSolver(solver_param));
solver->SetActionFunction(signal_handler.GetActionFunction());
LOG(INFO) << "Starting Optimization";
solver->Solve();
LOG(INFO) << "Optimization Done.";
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment