12 #ifndef MLPACK_METHODS_RANN_RA_MODEL_IMPL_HPP 13 #define MLPACK_METHODS_RANN_RA_MODEL_IMPL_HPP 22 template<
template<
typename TreeMetricType,
23 typename TreeStatType,
24 typename TreeMatType>
class TreeType>
28 ra.Train(std::move(referenceSet));
31 template<
template<
typename TreeMetricType,
32 typename TreeStatType,
33 typename TreeMatType>
class TreeType>
34 void
RAWrapper<TreeType>::Search(arma::mat&& querySet,
36 arma::Mat<size_t>& neighbors,
40 ra.
Search(querySet, k, neighbors, distances);
43 template<
template<
typename TreeMetricType,
44 typename TreeStatType,
45 typename TreeMatType>
class TreeType>
47 arma::Mat<size_t>& neighbors,
50 ra.
Search(k, neighbors, distances);
53 template<
template<
typename TreeMetricType,
54 typename TreeStatType,
55 typename TreeMatType>
class TreeType>
57 const size_t leafSize)
62 ra.Train(std::move(referenceSet));
66 std::vector<size_t> oldFromNewReferences;
67 typename decltype(ra)::Tree* tree =
68 new typename decltype(ra)::Tree(std::move(referenceSet),
75 ra.oldFromNewReferences = std::move(oldFromNewReferences);
79 template<
template<
typename TreeMetricType,
80 typename TreeStatType,
81 typename TreeMatType>
class TreeType>
84 arma::Mat<size_t>& neighbors,
86 const size_t leafSize)
88 if (!ra.Naive() && !ra.SingleMode())
92 Log::Info <<
"Building query tree...."<< std::endl;
93 std::vector<size_t> oldFromNewQueries;
94 typename decltype(ra)::Tree queryTree(std::move(querySet),
100 arma::Mat<size_t> neighborsOut;
101 arma::mat distancesOut;
102 ra.Search(&queryTree, k, neighborsOut, distancesOut);
105 distances.set_size(distancesOut.n_rows, distancesOut.n_cols);
106 neighbors.set_size(neighborsOut.n_rows, neighborsOut.n_cols);
107 for (
size_t i = 0; i < oldFromNewQueries.size(); ++i)
109 neighbors.col(oldFromNewQueries[i]) = neighborsOut.col(i);
110 distances.col(oldFromNewQueries[i]) = distancesOut.col(i);
116 ra.Search(querySet, k, neighbors, distances);
120 template<
typename Archive>
123 ar(CEREAL_NVP(treeType));
124 ar(CEREAL_NVP(randomBasis));
128 if (cereal::is_loading<Archive>())
129 InitializeModel(
false,
false);
138 ar(CEREAL_NVP(typedSearch));
145 ar(CEREAL_NVP(typedSearch));
152 ar(CEREAL_NVP(typedSearch));
159 ar(CEREAL_NVP(typedSearch));
166 ar(CEREAL_NVP(typedSearch));
173 ar(CEREAL_NVP(typedSearch));
180 ar(CEREAL_NVP(typedSearch));
183 case R_PLUS_PLUS_TREE:
187 ar(CEREAL_NVP(typedSearch));
194 ar(CEREAL_NVP(typedSearch));
201 ar(CEREAL_NVP(typedSearch));
static void Start(const std::string &name)
Start the given timer.
Definition: timers.cpp:28
virtual void Search(arma::mat &&querySet, const size_t k, arma::Mat< size_t > &neighbors, arma::mat &distances, const size_t)
Perform bichromatic neighbor search (i.e.
Definition: ra_model_impl.hpp:34
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
void serialize(Archive &ar, const uint32_t)
Serialize the model.
Definition: ra_model_impl.hpp:121
Definition: hmm_train_main.cpp:300
static void Stop(const std::string &name)
Stop the given timer.
Definition: timers.cpp:36
LeafSizeRAWrapper wraps any RASearch type that needs to be able to take the leaf size into account wh...
Definition: ra_model.hpp:208
static MLPACK_EXPORT util::PrefixedOutStream Info
Prints informational messages if –verbose is specified, prefixed with [INFO ].
Definition: log.hpp:84
RAWrapper is a wrapper class for most RASearch types.
Definition: ra_model.hpp:109