[mlpack-git] master: Refactor to apply mappings earlier. (670a56a)

gitdub at big.cc.gt.atl.ga.us gitdub at big.cc.gt.atl.ga.us
Thu Mar 12 16:05:10 EDT 2015


Repository : https://github.com/mlpack/mlpack

On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/eddd7167d69b6c88b271ef2e51d1c20e13f1acd8...70342dd8e5c17e0c164cfb8189748671e9c0dd44

>---------------------------------------------------------------

commit 670a56a58f050eb2a34a91028198b4e282a4fc6e
Author: Ryan Curtin <ryan at ratml.org>
Date:   Tue Feb 17 14:52:32 2015 -0500

    Refactor to apply mappings earlier.


>---------------------------------------------------------------

670a56a58f050eb2a34a91028198b4e282a4fc6e
 src/mlpack/methods/kmeans/dtnn_kmeans_impl.hpp | 13 +++----------
 src/mlpack/methods/kmeans/dtnn_rules_impl.hpp  |  7 +++++--
 2 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/src/mlpack/methods/kmeans/dtnn_kmeans_impl.hpp b/src/mlpack/methods/kmeans/dtnn_kmeans_impl.hpp
index dd6665b..08482f8 100644
--- a/src/mlpack/methods/kmeans/dtnn_kmeans_impl.hpp
+++ b/src/mlpack/methods/kmeans/dtnn_kmeans_impl.hpp
@@ -181,9 +181,7 @@ void DTNNKMeans<MetricType, MatType, TreeType>::UpdateTree(
   if ((node.Stat().Pruned() == clusterDistances.n_elem - 1) &&
       (node.Stat().Owner() < clusterDistances.n_elem - 1))
   {
-    const size_t owner = (tree::TreeTraits<TreeType>::RearrangesDataset) ?
-        oldFromNewCentroids[node.Stat().Owner()] :
-        node.Stat().Owner();
+    const size_t owner = node.Stat().Owner();
 
     node.Stat().LastUpperBound() = node.Stat().UpperBound() +
         clusterDistances[owner];
@@ -211,7 +209,6 @@ void DTNNKMeans<MetricType, MatType, TreeType>::UpdateTree(
   }
   node.Stat().Pruned() = size_t(-1);
   node.Stat().Owner() = size_t(-1);
-  node.Stat().LowerBound() = DBL_MAX;
 
   for (size_t i = 0; i < node.NumChildren(); ++i)
     UpdateTree(node.Child(i), clusterDistances, oldFromNewCentroids);
@@ -227,9 +224,7 @@ void DTNNKMeans<MetricType, MatType, TreeType>::ExtractCentroids(
   // Does this node own points?
   if (node.Stat().Pruned() == newCentroids.n_cols)
   {
-    const size_t owner = (tree::TreeTraits<TreeType>::RearrangesDataset) ?
-        oldFromNewCentroids[node.Stat().Owner()] :
-        node.Stat().Owner();
+    const size_t owner = node.Stat().Owner();
     newCentroids.col(owner) += node.Stat().Centroid() * node.NumDescendants();
     newCounts[owner] += node.NumDescendants();
   }
@@ -241,9 +236,7 @@ void DTNNKMeans<MetricType, MatType, TreeType>::ExtractCentroids(
     {
       for (size_t i = 0; i < node.NumPoints(); ++i)
       {
-        const size_t owner = (tree::TreeTraits<TreeType>::RearrangesDataset) ?
-            oldFromNewCentroids[assignments[node.Point(i)]] :
-            assignments[node.Point(i)];
+        const size_t owner = assignments[node.Point(i)];
         newCentroids.col(owner) += dataset.col(node.Point(i));
         ++newCounts[owner];
       }
diff --git a/src/mlpack/methods/kmeans/dtnn_rules_impl.hpp b/src/mlpack/methods/kmeans/dtnn_rules_impl.hpp
index 6a57273..d5268f4 100644
--- a/src/mlpack/methods/kmeans/dtnn_rules_impl.hpp
+++ b/src/mlpack/methods/kmeans/dtnn_rules_impl.hpp
@@ -58,7 +58,8 @@ inline force_inline double DTNNKMeansRules<MetricType, TreeType>::BaseCase(
   {
     lowerBounds[queryIndex] = upperBounds[queryIndex];
     upperBounds[queryIndex] = distance;
-    assignments[queryIndex] = referenceIndex;
+    assignments[queryIndex] = (tree::TreeTraits<TreeType>::RearrangesDataset) ?
+        oldFromNewCentroids[referenceIndex] : referenceIndex;
   }
   else if (distance < lowerBounds[queryIndex])
   {
@@ -121,7 +122,9 @@ inline double DTNNKMeansRules<MetricType, TreeType>::Score(
     queryNode.Stat().UpperBound() = distances.Hi();
     // If this node has only one descendant, then it may be the owner.
     if (referenceNode.NumDescendants() == 1)
-      queryNode.Stat().Owner() = referenceNode.Descendant(0);
+      queryNode.Stat().Owner() = (tree::TreeTraits<TreeType>::RearrangesDataset)
+          ? oldFromNewCentroids[referenceNode.Descendant(0)]
+          : referenceNode.Descendant(0);
   }
 
   // Is everything pruned?



More information about the mlpack-git mailing list