[mlpack-git] master: Use ClosestQueryNode() not MaxQueryNodeDistance(). Eventually MaxQueryNodeDistance() will not be reset to DBL_MAX every iteration. (e72ab4c)
gitdub at big.cc.gt.atl.ga.us
gitdub at big.cc.gt.atl.ga.us
Thu Mar 12 16:01:41 EDT 2015
Repository : https://github.com/mlpack/mlpack
On branch : master
Link : https://github.com/mlpack/mlpack/compare/eddd7167d69b6c88b271ef2e51d1c20e13f1acd8...70342dd8e5c17e0c164cfb8189748671e9c0dd44
>---------------------------------------------------------------
commit e72ab4c744eb9ade8476a0452b86604c9396ef4e
Author: Ryan Curtin <ryan at ratml.org>
Date: Mon Jan 12 18:11:30 2015 -0500
Use ClosestQueryNode() not MaxQueryNodeDistance(). Eventually MaxQueryNodeDistance() will not be reset to DBL_MAX every iteration.
>---------------------------------------------------------------
e72ab4c744eb9ade8476a0452b86604c9396ef4e
src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp b/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp
index b13e544..34df556 100644
--- a/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp
+++ b/src/mlpack/methods/kmeans/dual_tree_kmeans_rules_impl.hpp
@@ -121,15 +121,19 @@ double DualTreeKMeansRules<MetricType, TreeType>::Score(
distanceCalculations += 2;
score = PellegMooreScore(queryNode, referenceNode, minDistance);
- if (referenceNode.Stat().MaxQueryNodeDistance() == DBL_MAX &&
+ if (referenceNode.Stat().ClosestQueryNode() == NULL &&
referenceNode.Parent() != NULL &&
- referenceNode.Parent()->Stat().MaxQueryNodeDistance() != DBL_MAX)
+ referenceNode.Parent()->Stat().ClosestQueryNode() != NULL)
{
referenceNode.Stat().ClosestQueryNode() =
referenceNode.Parent()->Stat().ClosestQueryNode();
- referenceNode.Stat().MaxQueryNodeDistance() =
- referenceNode.Parent()->Stat().MaxQueryNodeDistance();
+ referenceNode.Stat().MaxQueryNodeDistance() = std::min(
+ referenceNode.Parent()->Stat().MaxQueryNodeDistance(),
+ referenceNode.Stat().MaxQueryNodeDistance());
}
+ else if (referenceNode.Parent() != NULL &&
+ referenceNode.Parent()->Stat().ClosestQueryNode() == NULL)
+ Log::Fatal << "wtf\n";
if (maxDistance < referenceNode.Stat().MaxQueryNodeDistance() ||
referenceNode.Stat().ClosestQueryNode() == NULL)
More information about the mlpack-git
mailing list