[mlpack-git] master, mlpack-1.0.x: Refactor NeighborSearch so it works with arbitrary TreeType::Mat types. That abstraction should probably be cleaned up a bit. (b4bc237)
gitdub at big.cc.gt.atl.ga.us
gitdub at big.cc.gt.atl.ga.us
Thu Mar 5 21:44:28 EST 2015
Repository : https://github.com/mlpack/mlpack
On branches: master,mlpack-1.0.x
Link : https://github.com/mlpack/mlpack/compare/904762495c039e345beba14c1142fd719b3bd50e...f94823c800ad6f7266995c700b1b630d5ffdcf40
>---------------------------------------------------------------
commit b4bc2379443d872b093fdaf1f11efdbcf67f93d8
Author: Ryan Curtin <ryan at ratml.org>
Date: Thu Feb 20 00:34:21 2014 +0000
Refactor NeighborSearch so it works with arbitrary TreeType::Mat types. That
abstraction should probably be cleaned up a bit.
>---------------------------------------------------------------
b4bc2379443d872b093fdaf1f11efdbcf67f93d8
src/mlpack/methods/neighbor_search/neighbor_search.hpp | 8 ++++----
.../methods/neighbor_search/neighbor_search_rules.hpp | 8 ++++----
.../methods/neighbor_search/neighbor_search_rules_impl.hpp | 14 +++++++-------
3 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/src/mlpack/methods/neighbor_search/neighbor_search.hpp b/src/mlpack/methods/neighbor_search/neighbor_search.hpp
index e391b0e..4439fc7 100644
--- a/src/mlpack/methods/neighbor_search/neighbor_search.hpp
+++ b/src/mlpack/methods/neighbor_search/neighbor_search.hpp
@@ -199,14 +199,14 @@ class NeighborSearch
private:
//! Copy of reference dataset (if we need it, because tree building modifies
//! it).
- arma::mat referenceCopy;
+ typename TreeType::Mat referenceCopy;
//! Copy of query dataset (if we need it, because tree building modifies it).
- arma::mat queryCopy;
+ typename TreeType::Mat queryCopy;
//! Reference dataset.
- const arma::mat& referenceSet;
+ const typename TreeType::Mat& referenceSet;
//! Query dataset (may not be given).
- const arma::mat& querySet;
+ const typename TreeType::Mat& querySet;
//! Pointer to the root of the reference tree.
TreeType* referenceTree;
diff --git a/src/mlpack/methods/neighbor_search/neighbor_search_rules.hpp b/src/mlpack/methods/neighbor_search/neighbor_search_rules.hpp
index 3f46b0d..cd37e44 100644
--- a/src/mlpack/methods/neighbor_search/neighbor_search_rules.hpp
+++ b/src/mlpack/methods/neighbor_search/neighbor_search_rules.hpp
@@ -17,8 +17,8 @@ template<typename SortPolicy, typename MetricType, typename TreeType>
class NeighborSearchRules
{
public:
- NeighborSearchRules(const arma::mat& referenceSet,
- const arma::mat& querySet,
+ NeighborSearchRules(const typename TreeType::Mat& referenceSet,
+ const typename TreeType::Mat& querySet,
arma::Mat<size_t>& neighbors,
arma::mat& distances,
MetricType& metric);
@@ -95,10 +95,10 @@ class NeighborSearchRules
private:
//! The reference set.
- const arma::mat& referenceSet;
+ const typename TreeType::Mat& referenceSet;
//! The query set.
- const arma::mat& querySet;
+ const typename TreeType::Mat& querySet;
//! The matrix the resultant neighbor indices should be stored in.
arma::Mat<size_t>& neighbors;
diff --git a/src/mlpack/methods/neighbor_search/neighbor_search_rules_impl.hpp b/src/mlpack/methods/neighbor_search/neighbor_search_rules_impl.hpp
index 639483b..a042e56 100644
--- a/src/mlpack/methods/neighbor_search/neighbor_search_rules_impl.hpp
+++ b/src/mlpack/methods/neighbor_search/neighbor_search_rules_impl.hpp
@@ -15,8 +15,8 @@ namespace neighbor {
template<typename SortPolicy, typename MetricType, typename TreeType>
NeighborSearchRules<SortPolicy, MetricType, TreeType>::NeighborSearchRules(
- const arma::mat& referenceSet,
- const arma::mat& querySet,
+ const typename TreeType::Mat& referenceSet,
+ const typename TreeType::Mat& querySet,
arma::Mat<size_t>& neighbors,
arma::mat& distances,
MetricType& metric) :
@@ -51,12 +51,12 @@ BaseCase(const size_t queryIndex, const size_t referenceIndex)
if ((lastQueryIndex == queryIndex) && (lastReferenceIndex == referenceIndex))
return lastBaseCase;
- double distance = metric.Evaluate(querySet.unsafe_col(queryIndex),
- referenceSet.unsafe_col(referenceIndex));
+ double distance = metric.Evaluate(querySet.col(queryIndex),
+ referenceSet.col(referenceIndex));
++baseCases;
// If this distance is better than any of the current candidates, the
- // SortDistance() function will give us the position to insert it into.
+ // SortDistance() function will give us the poto insert it into.
arma::vec queryDist = distances.unsafe_col(queryIndex);
arma::Col<size_t> queryIndices = neighbors.unsafe_col(queryIndex);
const size_t insertPosition = SortPolicy::SortDistance(queryDist,
@@ -105,8 +105,8 @@ inline double NeighborSearchRules<SortPolicy, MetricType, TreeType>::Score(
}
else
{
- const arma::vec queryPoint = querySet.unsafe_col(queryIndex);
- distance = SortPolicy::BestPointToNodeDistance(queryPoint, &referenceNode);
+ distance = SortPolicy::BestPointToNodeDistance(querySet.col(queryIndex),
+ &referenceNode);
}
// Compare against the best k'th distance for this query point so far.
More information about the mlpack-git
mailing list