[mlpack-git] master: Refactor HMMTest for boost::serialization. (b4659b6)

gitdub at big.cc.gt.atl.ga.us gitdub at big.cc.gt.atl.ga.us
Mon Jul 13 04:05:11 EDT 2015


Repository : https://github.com/mlpack/mlpack

On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/8b2ca720828224607c70d2b539c43aecf8f4ec32...b4659b668021db631b3c8a48e3d735b513706fdc

>---------------------------------------------------------------

commit b4659b668021db631b3c8a48e3d735b513706fdc
Author: Ryan Curtin <ryan at ratml.org>
Date:   Mon Jul 13 07:44:40 2015 +0000

    Refactor HMMTest for boost::serialization.


>---------------------------------------------------------------

b4659b668021db631b3c8a48e3d735b513706fdc
 src/mlpack/tests/hmm_test.cpp | 70 +++++++++++++++++++++++++------------------
 1 file changed, 41 insertions(+), 29 deletions(-)

diff --git a/src/mlpack/tests/hmm_test.cpp b/src/mlpack/tests/hmm_test.cpp
index 6ec90b2..060df65 100644
--- a/src/mlpack/tests/hmm_test.cpp
+++ b/src/mlpack/tests/hmm_test.cpp
@@ -1001,19 +1001,25 @@ BOOST_AUTO_TEST_CASE(GMMHMMLoadSaveTest)
     }
   }
 
-  util::SaveRestoreUtility sr;
-  hmm.Save(sr);
-  sr.WriteFile("test-hmm-save.xml");
+  // Save the HMM.
+  {
+    std::ofstream ofs("test-hmm-save.xml");
+    boost::archive::xml_oarchive ar(ofs);
+    ar << data::CreateNVP(hmm, "hmm");
+  }
 
-  util::SaveRestoreUtility sr2;
-  sr2.ReadFile("test-hmm-save.xml");
-  HMM<GMM<> > hmm2(3, GMM<>(4, 3));
-  hmm2.Load(sr2);
+  // Load the HMM.
+  HMM<GMM<>> hmm2(3, GMM<>(4, 3));
+  {
+    std::ifstream ifs("test-hmm-save.xml");
+    boost::archive::xml_iarchive ar(ifs);
+    ar >> data::CreateNVP(hmm2, "hmm");
+  }
 
   // Remove clutter.
   remove("test-hmm-save.xml");
 
-  for(size_t j = 0; j < hmm.Emission().size(); ++j)
+  for (size_t j = 0; j < hmm.Emission().size(); ++j)
   {
     BOOST_REQUIRE_EQUAL(hmm.Emission()[j].Gaussians(),
                         hmm2.Emission()[j].Gaussians());
@@ -1061,19 +1067,25 @@ BOOST_AUTO_TEST_CASE(GaussianHMMLoadSaveTest)
     hmm.Emission()[j].Covariance(std::move(covariance));
   }
 
-  util::SaveRestoreUtility sr;
-  hmm.Save(sr);
-  sr.WriteFile("test-hmm-save.xml");
+  // Save the HMM.
+  {
+    std::ofstream ofs("test-hmm-save.xml");
+    boost::archive::xml_oarchive ar(ofs);
+    ar << data::CreateNVP(hmm, "hmm");
+  }
 
-  util::SaveRestoreUtility sr2;
-  sr2.ReadFile("test-hmm-save.xml");
+  // Load the HMM.
   HMM<GaussianDistribution> hmm2(3, GaussianDistribution(2));
-  hmm2.Load(sr2);
+  {
+    std::ifstream ifs("test-hmm-save.xml");
+    boost::archive::xml_iarchive ar(ifs);
+    ar >> data::CreateNVP(hmm2, "hmm");
+  }
 
   // Remove clutter.
   remove("test-hmm-save.xml");
 
-  for(size_t j = 0; j < hmm.Emission().size(); ++j)
+  for (size_t j = 0; j < hmm.Emission().size(); ++j)
   {
     BOOST_REQUIRE_EQUAL(hmm.Emission()[j].Dimensionality(),
                         hmm2.Emission()[j].Dimensionality());
@@ -1088,7 +1100,6 @@ BOOST_AUTO_TEST_CASE(GaussianHMMLoadSaveTest)
             hmm2.Emission()[j].Covariance()(i, k), 1e-3);
       }
     }
-
   }
 }
 
@@ -1098,8 +1109,7 @@ BOOST_AUTO_TEST_CASE(GaussianHMMLoadSaveTest)
 BOOST_AUTO_TEST_CASE(DiscreteHMMLoadSaveTest)
 {
   // Create a Discrete HMM, save it, and load it.
-
-    std::vector<DiscreteDistribution> emission(4);
+  std::vector<DiscreteDistribution> emission(4);
   emission[0].Probabilities() = arma::randu<arma::vec>(6);
   emission[0].Probabilities() /= accu(emission[0].Probabilities());
   emission[1].Probabilities() = arma::randu<arma::vec>(6);
@@ -1120,26 +1130,28 @@ BOOST_AUTO_TEST_CASE(DiscreteHMMLoadSaveTest)
     hmm.Emission()[j].Probabilities() /= accu(emission[j].Probabilities());
   }
 
-  util::SaveRestoreUtility sr;
-  hmm.Save(sr);
-  sr.WriteFile("test-hmm-save.xml");
+  // Save the HMM.
+  {
+    std::ofstream ofs("test-hmm-save.xml");
+    boost::archive::xml_oarchive ar(ofs);
+    ar << data::CreateNVP(hmm, "hmm");
+  }
 
-  util::SaveRestoreUtility sr2;
-  sr2.ReadFile("test-hmm-save.xml");
+  // Load the HMM.
   HMM<DiscreteDistribution> hmm2(3, DiscreteDistribution(3));
-  hmm2.Load(sr2);
+  {
+    std::ifstream ifs("test-hmm-save.xml");
+    boost::archive::xml_iarchive ar(ifs);
+    ar >> data::CreateNVP(hmm2, "hmm");
+  }
 
   // Remove clutter.
   remove("test-hmm-save.xml");
 
-  for(size_t j = 0; j < hmm.Emission().size(); ++j)
-  {
+  for (size_t j = 0; j < hmm.Emission().size(); ++j)
     for (size_t i = 0; i < hmm.Emission()[j].Probabilities().n_elem; ++i)
-    {
       BOOST_REQUIRE_CLOSE(hmm.Emission()[j].Probabilities()[i],
           hmm2.Emission()[j].Probabilities()[i], 1e-3);
-    }
-  }
 }
 
 BOOST_AUTO_TEST_SUITE_END();



More information about the mlpack-git mailing list