#include #include #include "serialize_pickle.h" #include using namespace dlib; using namespace std; using namespace boost::python; typedef matrix sample_type; typedef std::vector > sparse_vect; template double predict ( const decision_function& df, const typename decision_function::kernel_type::sample_type& samp ) { if (df.basis_vectors.size() == 0) { return 0; } else if (df.basis_vectors(0).size() != samp.size()) { std::ostringstream sout; sout << "Input vector should have " << df.basis_vectors(0).size() << " dimensions, not " << samp.size() << "."; PyErr_SetString( PyExc_IndexError, sout.str().c_str() ); boost::python::throw_error_already_set(); } return df(samp); } template void add_df ( const std::string name ) { typedef decision_function df_type; class_(name.c_str()) .def("predict", &predict) .def_pickle(serialize_pickle()); } void bind_decision_functions() { add_df >("_decision_function_linear"); add_df >("_decision_function_sparse_linear"); add_df >("_decision_function_radial_basis"); add_df >("_decision_function_sparse_radial_basis"); }