[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