[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