[mlpack-git] master: Add Serialize() to distributions. (ee916cd)

gitdub at big.cc.gt.atl.ga.us gitdub at big.cc.gt.atl.ga.us
Fri Jul 10 18:59:24 EDT 2015


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

On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/4a97187bbba7ce8a6191b714949dd818ef0f37d2...e5905e62c15d1bcff21e6359b11efcd7ab6d7ca0

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

commit ee916cd32140790bc3f433ca095db7b465550f95
Author: ryan <ryan at ratml.org>
Date:   Fri Apr 17 12:28:58 2015 -0400

    Add Serialize() to distributions.


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

ee916cd32140790bc3f433ca095db7b465550f95
 src/mlpack/core/dists/discrete_distribution.hpp   | 11 ++++++++++-
 src/mlpack/core/dists/gaussian_distribution.cpp   |  3 +--
 src/mlpack/core/dists/gaussian_distribution.hpp   | 16 ++++++++++++++++
 src/mlpack/core/dists/laplace_distribution.hpp    | 10 ++++++++++
 src/mlpack/core/dists/regression_distribution.hpp | 23 ++++++++++++++++++++---
 5 files changed, 57 insertions(+), 6 deletions(-)

diff --git a/src/mlpack/core/dists/discrete_distribution.hpp b/src/mlpack/core/dists/discrete_distribution.hpp
index fb3c954..ad1743c 100644
--- a/src/mlpack/core/dists/discrete_distribution.hpp
+++ b/src/mlpack/core/dists/discrete_distribution.hpp
@@ -153,12 +153,21 @@ class DiscreteDistribution
   //! Modify the vector of probabilities.
   arma::vec& Probabilities() { return probabilities; }
 
+  /**
+   * Serialize the distribution.
+   */
+  template<typename Archive>
+  void Serialize(Archive& ar, const unsigned int /* version */)
+  {
+    // We only need to save the probabilities, since that's all we hold.
+    ar & data::CreateNVP(probabilities, "probabilities");
+  }
+
   /*
    * Returns a string representation of this object.
    */
   std::string ToString() const;
 
-
   /** Save to or Load from SaveRestoreUtility
    */
   void Save(util::SaveRestoreUtility& n) const;
diff --git a/src/mlpack/core/dists/gaussian_distribution.cpp b/src/mlpack/core/dists/gaussian_distribution.cpp
index 2949f94..692c62c 100644
--- a/src/mlpack/core/dists/gaussian_distribution.cpp
+++ b/src/mlpack/core/dists/gaussian_distribution.cpp
@@ -219,8 +219,7 @@ std::string GaussianDistribution::ToString() const
   return convert.str();
 }
 
-
-/*&
+/**
  * Save to SaveRestoreUtility.
  */
 void GaussianDistribution::Save(util::SaveRestoreUtility& sr) const
diff --git a/src/mlpack/core/dists/gaussian_distribution.hpp b/src/mlpack/core/dists/gaussian_distribution.hpp
index 8462aaf..8c631fa 100644
--- a/src/mlpack/core/dists/gaussian_distribution.hpp
+++ b/src/mlpack/core/dists/gaussian_distribution.hpp
@@ -138,6 +138,22 @@ class GaussianDistribution
   void Covariance(arma::mat&& covariance);
 
   /**
+   * Serialize the distribution.
+   */
+  template<typename Archive>
+  void Serialize(Archive& ar, const unsigned int /* version */)
+  {
+    using data::CreateNVP;
+
+    // We just need to serialize each of the members.
+    ar & CreateNVP(mean, "mean");
+    ar & CreateNVP(covariance, "covariance");
+    ar & CreateNVP(covLower, "covLower");
+    ar & CreateNVP(invCov, "invCov");
+    ar & CreateNVP(logDetCov, "logDetCov");
+  }
+
+  /**
    * Returns a string representation of this object.
    */
   std::string ToString() const;
diff --git a/src/mlpack/core/dists/laplace_distribution.hpp b/src/mlpack/core/dists/laplace_distribution.hpp
index 019fa4d..de2afe0 100644
--- a/src/mlpack/core/dists/laplace_distribution.hpp
+++ b/src/mlpack/core/dists/laplace_distribution.hpp
@@ -135,6 +135,16 @@ class LaplaceDistribution
   //! Modify the scale parameter.
   double& Scale() { return scale; }
 
+  /**
+   * Serialize the distribution.
+   */
+  template<typename Archive>
+  void Serialize(Archive& ar, const unsigned int /* version */)
+  {
+    ar & data::CreateNVP(mean, "mean");
+    ar & data::CreateNVP(scale, "scale");
+  }
+
   //! Return a string representation of the object.
   std::string ToString() const;
 
diff --git a/src/mlpack/core/dists/regression_distribution.hpp b/src/mlpack/core/dists/regression_distribution.hpp
index b3186a8..01abb77 100644
--- a/src/mlpack/core/dists/regression_distribution.hpp
+++ b/src/mlpack/core/dists/regression_distribution.hpp
@@ -27,7 +27,7 @@ class RegressionDistribution
  private:
   //! Regression function for representing conditional mean.
   regression::LinearRegression rf;
-  //! Error distribution
+  //! Error distribution.
   GaussianDistribution err;
 
  public:
@@ -54,12 +54,29 @@ class RegressionDistribution
   }
 
   /**
+   * Serialize the distribution.
+   */
+  template<typename Archive>
+  void Serialize(Archive& ar, const unsigned int /* version */)
+  {
+    ar & data::CreateNVP(rf, "rf");
+    ar & data::CreateNVP(err, "err");
+  }
+
+  /**
    * Returns a string representation of this object.
    */
   std::string ToString() const;
 
-  // Return regression function
-  const regression::LinearRegression& Rf() { return rf; }
+  //! Return regression function.
+  const regression::LinearRegression& Rf() const { return rf; }
+  //! Modify regression function.
+  regression::LinearRegression& Rf() { return rf; }
+
+  //! Return error distribution.
+  const GaussianDistribution& Err() const { return err; }
+  //! Modify error distribution.
+  GaussianDistribution& Err() { return err; }
 
   /**
    * Estimate the Gaussian distribution directly from the given observations.



More information about the mlpack-git mailing list