[mlpack-git] master: Use accu(a % b) not trace(a * b). (4f271e4)
gitdub at big.cc.gt.atl.ga.us
gitdub at big.cc.gt.atl.ga.us
Thu Jan 15 11:40:43 EST 2015
Repository : https://github.com/mlpack/mlpack
On branch : master
Link : https://github.com/mlpack/mlpack/compare/184c36dda87a9259c74d82265c2027896e097d42...1cf0e9bb2bd4d758e7b43220bf13e25de47a324c
>---------------------------------------------------------------
commit 4f271e429de38c27dc1ca4698390958ba9bd0657
Author: ryan <ryan at ratml.org>
Date: Wed Jan 14 16:59:50 2015 -0500
Use accu(a % b) not trace(a * b).
>---------------------------------------------------------------
4f271e429de38c27dc1ca4698390958ba9bd0657
src/mlpack/core/optimizers/lrsdp/lrsdp_function.cpp | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/src/mlpack/core/optimizers/lrsdp/lrsdp_function.cpp b/src/mlpack/core/optimizers/lrsdp/lrsdp_function.cpp
index 9bbdd22..686ab1a 100644
--- a/src/mlpack/core/optimizers/lrsdp/lrsdp_function.cpp
+++ b/src/mlpack/core/optimizers/lrsdp/lrsdp_function.cpp
@@ -37,9 +37,9 @@ double LRSDPFunction::Evaluate(const arma::mat& coordinates) const
const arma::mat rrt = coordinates * trans(coordinates);
double objective = 0.;
if (hasSparseObjective())
- objective += trace(SparseC() * rrt);
+ objective += accu(SparseC() % rrt);
if (hasDenseObjective())
- objective += trace(DenseC() * rrt);
+ objective += accu(DenseC() % rrt);
return objective;
}
@@ -55,9 +55,9 @@ double LRSDPFunction::EvaluateConstraint(const size_t index,
{
const arma::mat rrt = coordinates * trans(coordinates);
if (index < NumSparseConstraints())
- return trace(sparseA[index] * rrt) - sparseB[index];
+ return accu(sparseA[index] % rrt) - sparseB[index];
const size_t index1 = index - NumSparseConstraints();
- return trace(denseA[index1] * rrt) - denseB[index1];
+ return accu(denseA[index1] % rrt) - denseB[index1];
}
void LRSDPFunction::GradientConstraint(const size_t /* index */,
@@ -99,7 +99,7 @@ UpdateObjective(double& objective,
for (size_t i = 0; i < ais.size(); ++i)
{
// Take the trace subtracted by the b_i.
- const double constraint = trace(ais[i] * rrt) - bis[i];
+ const double constraint = accu(ais[i] % rrt) - bis[i];
objective -= (lambda[lambdaOffset + i] * constraint);
objective += (sigma / 2.) * constraint * constraint;
}
@@ -119,7 +119,7 @@ UpdateGradient(arma::mat& s,
{
for (size_t i = 0; i < ais.size(); ++i)
{
- const double constraint = trace(ais[i] * rrt) - bis[i];
+ const double constraint = accu(ais[i] % rrt) - bis[i];
const double y = lambda[lambdaOffset + i] - sigma * constraint;
s -= y * ais[i];
}
@@ -146,9 +146,9 @@ double AugLagrangianFunction<LRSDPFunction>::Evaluate(
const arma::mat rrt = coordinates * trans(coordinates);
double objective = 0.;
if (function.hasSparseObjective())
- objective += trace(function.SparseC() * rrt);
+ objective += accu(function.SparseC() % rrt);
if (function.hasDenseObjective())
- objective += trace(function.DenseC() * rrt);
+ objective += accu(function.DenseC() % rrt);
// Now each constraint.
UpdateObjective(objective, rrt, function.SparseA(), function.SparseB(),
More information about the mlpack-git
mailing list