[mlpack-svn] r13314 - mlpack/trunk/src/mlpack/methods/det
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Thu Aug 2 12:34:39 EDT 2012
Author: rcurtin
Date: 2012-08-02 12:34:39 -0400 (Thu, 02 Aug 2012)
New Revision: 13314
Modified:
mlpack/trunk/src/mlpack/methods/det/dt_utils.cpp
mlpack/trunk/src/mlpack/methods/det/dtree.cpp
Log:
Fix std::pow ambiguity on older compilers
Modified: mlpack/trunk/src/mlpack/methods/det/dt_utils.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/det/dt_utils.cpp 2012-08-02 09:02:00 UTC (rev 13313)
+++ mlpack/trunk/src/mlpack/methods/det/dt_utils.cpp 2012-08-02 16:34:39 UTC (rev 13314)
@@ -150,6 +150,7 @@
{
std::pair<double, double> treeSeq(oldAlpha,
dtree->SubtreeLeavesLogNegError());
+ Log::Debug << "sllne " << dtree->SubtreeLeavesLogNegError() << std::endl;
prunedSequence.push_back(treeSeq);
oldAlpha = alpha;
alpha = dtree->PruneAndUpdate(oldAlpha, dataset.n_cols, useVolumeReg);
Modified: mlpack/trunk/src/mlpack/methods/det/dtree.cpp
===================================================================
--- mlpack/trunk/src/mlpack/methods/det/dtree.cpp 2012-08-02 09:02:00 UTC (rev 13313)
+++ mlpack/trunk/src/mlpack/methods/det/dtree.cpp 2012-08-02 16:34:39 UTC (rev 13314)
@@ -337,8 +337,9 @@
// As a result we do leave log-space, but the largest quantity we
// represent is on the order of (V_t / V_i) where V_i is the smallest leaf
// node below this node, which depends heavily on the depth of the tree.
- subtreeLeavesLogNegError = std::log(std::exp(logVolume +
- left->SubtreeLeavesLogNegError() + right->SubtreeLeavesLogNegError()))
+ subtreeLeavesLogNegError = std::log(
+ std::exp(logVolume + left->SubtreeLeavesLogNegError()) +
+ std::exp(logVolume + right->SubtreeLeavesLogNegError()))
- logVolume;
}
else
@@ -369,9 +370,9 @@
const double leftRatio = (splitValue - minVals[splitDim]) / range;
const double rightRatio = (maxVals[splitDim] - splitValue) / range;
- const size_t leftPow = std::pow(left->End() - left->Start(), 2);
- const size_t rightPow = std::pow(right->End() - right->Start(), 2);
- const size_t thisPow = std::pow(end - start, 2);
+ const size_t leftPow = std::pow(left->End() - left->Start(), (size_t) 2);
+ const size_t rightPow = std::pow(right->End() - right->Start(), (size_t) 2);
+ const size_t thisPow = std::pow(end - start, (size_t) 2);
double tmpAlphaSum = leftPow / leftRatio + rightPow / rightRatio - thisPow;
@@ -423,7 +424,7 @@
// Compute gT.
if (subtreeLeaves == 1) // If we are a leaf...
{
- return 0;
+ return std::numeric_limits<double>::max();
}
else
{
@@ -451,8 +452,9 @@
// As a result we do leave log-space, but the largest quantity we
// represent is on the order of (V_t / V_i) where V_i is the smallest leaf
// node below this node, which depends heavily on the depth of the tree.
- subtreeLeavesLogNegError = std::log(std::exp(logVolume +
- left->SubtreeLeavesLogNegError() + right->SubtreeLeavesLogNegError()))
+ subtreeLeavesLogNegError = std::log(
+ std::exp(logVolume + left->SubtreeLeavesLogNegError()) +
+ std::exp(logVolume + right->SubtreeLeavesLogNegError()))
- logVolume;
// Recalculate upper alpha.
More information about the mlpack-svn
mailing list