[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