[mlpack-svn] r17483 - mlpack/tags/mlpack-1.0.11/src/mlpack/tests
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Mon Dec 8 13:46:52 EST 2014
Author: rcurtin
Date: Mon Dec 8 13:46:52 2014
New Revision: 17483
Log:
Refactor test to handle random failures.
Modified:
mlpack/tags/mlpack-1.0.11/src/mlpack/tests/quic_svd_test.cpp
Modified: mlpack/tags/mlpack-1.0.11/src/mlpack/tests/quic_svd_test.cpp
==============================================================================
--- mlpack/tags/mlpack-1.0.11/src/mlpack/tests/quic_svd_test.cpp (original)
+++ mlpack/tags/mlpack-1.0.11/src/mlpack/tests/quic_svd_test.cpp Mon Dec 8 13:46:52 2014
@@ -40,18 +40,31 @@
arma::mat dataset;
data::Load("test_data_3_1000.csv", dataset);
- // Obtain the SVD using default parameters.
- arma::mat u, v, sigma;
- QUIC_SVD quicsvd(dataset, u, v, sigma);
-
- // Reconstruct the matrix using the SVD.
- arma::mat reconstruct;
- reconstruct = u * sigma * v.t();
-
- // The relative reconstruction error should be small.
- double relativeError = arma::norm(dataset - reconstruct, "frob") /
- arma::norm(dataset, "frob");
- BOOST_REQUIRE_SMALL(relativeError, 1e-5);
+ // Since QUIC-SVD may have random errors, run up to three trials to get a good
+ // results.
+ size_t successes = 0;
+ size_t trial = 0;
+
+ while (trial < 3 && successes < 1)
+ {
+ // Obtain the SVD using default parameters.
+ arma::mat u, v, sigma;
+ QUIC_SVD quicsvd(dataset, u, v, sigma);
+
+ // Reconstruct the matrix using the SVD.
+ arma::mat reconstruct;
+ reconstruct = u * sigma * v.t();
+
+ // The relative reconstruction error should be small.
+ double relativeError = arma::norm(dataset - reconstruct, "frob") /
+ arma::norm(dataset, "frob");
+ if (relativeError < 1e-5)
+ ++successes;
+
+ ++trial;
+ }
+
+ BOOST_REQUIRE_GE(successes, 1);
}
BOOST_AUTO_TEST_SUITE_END();
More information about the mlpack-svn
mailing list