From f5c285813ccc32f60c975f254fe99860f8a50a26 Mon Sep 17 00:00:00 2001 From: Jonathan L Long Date: Fri, 25 Apr 2014 14:50:36 -0700 Subject: [PATCH] pycaffe: add unary CaffeNet constructor for uninitialized nets Note that parameters are uninitialized, not zero-filled. --- python/caffe/_caffe.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/python/caffe/_caffe.cpp b/python/caffe/_caffe.cpp index 0e6bac2..a443f89 100644 --- a/python/caffe/_caffe.cpp +++ b/python/caffe/_caffe.cpp @@ -134,17 +134,28 @@ class CaffeLayer { // A simple wrapper over CaffeNet that runs the forward process. struct CaffeNet { + // For cases where parameters will be determined later by the Python user, + // create a Net with unallocated parameters (which will not be zero-filled + // when accessed). + explicit CaffeNet(string param_file) { + Init(param_file); + } + CaffeNet(string param_file, string pretrained_param_file) { - CheckFile(param_file); + Init(param_file); CheckFile(pretrained_param_file); - - net_.reset(new Net(param_file)); net_->CopyTrainedLayersFrom(pretrained_param_file); } explicit CaffeNet(shared_ptr > net) : net_(net) {} + void Init(string param_file) { + CheckFile(param_file); + net_.reset(new Net(param_file)); + } + + virtual ~CaffeNet() {} inline void check_array_against_blob( @@ -308,6 +319,7 @@ class CaffeSGDSolver { BOOST_PYTHON_MODULE(_caffe) { boost::python::class_( "Net", boost::python::init()) + .def(boost::python::init()) .def("Forward", &CaffeNet::Forward) .def("ForwardPrefilled", &CaffeNet::ForwardPrefilled) .def("Backward", &CaffeNet::Backward) -- 2.7.4