[mlpack-git] master: Improve reverse compatibility of NSModel. (2698225)

gitdub at mlpack.org gitdub at mlpack.org
Wed Aug 17 14:32:33 EDT 2016


Repository : https://github.com/mlpack/mlpack
On branch  : master
Link       : https://github.com/mlpack/mlpack/compare/0f4b25acd6aaa14294c044874ba6cc0751712baa...0a19d07bd39e6223991976474bc79671ba8aa0f0

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

commit 2698225eabde8bf2022d62209b965509d3207f73
Author: MarcosPividori <marcos.pividori at gmail.com>
Date:   Wed Aug 17 15:32:33 2016 -0300

    Improve reverse compatibility of NSModel.


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

2698225eabde8bf2022d62209b965509d3207f73
 src/mlpack/methods/neighbor_search/ns_model.hpp      |  4 ++++
 src/mlpack/methods/neighbor_search/ns_model_impl.hpp | 14 +++++++++-----
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/mlpack/methods/neighbor_search/ns_model.hpp b/src/mlpack/methods/neighbor_search/ns_model.hpp
index 9398aa1..e1606e9 100644
--- a/src/mlpack/methods/neighbor_search/ns_model.hpp
+++ b/src/mlpack/methods/neighbor_search/ns_model.hpp
@@ -395,6 +395,10 @@ class NSModel
 } // namespace neighbor
 } // namespace mlpack
 
+//! Set the serialization version of the NSModel class.
+BOOST_TEMPLATE_CLASS_VERSION(template<typename SortPolicy>,
+    mlpack::neighbor::NSModel<SortPolicy>, 1);
+
 // Include implementation.
 #include "ns_model_impl.hpp"
 
diff --git a/src/mlpack/methods/neighbor_search/ns_model_impl.hpp b/src/mlpack/methods/neighbor_search/ns_model_impl.hpp
index 79c8772..e0d152b 100644
--- a/src/mlpack/methods/neighbor_search/ns_model_impl.hpp
+++ b/src/mlpack/methods/neighbor_search/ns_model_impl.hpp
@@ -313,13 +313,17 @@ void serialize(Archive& ar, NSSpillType& ns, const unsigned int version)
 //! Serialize the kNN model.
 template<typename SortPolicy>
 template<typename Archive>
-void NSModel<SortPolicy>::Serialize(Archive& ar,
-                                    const unsigned int /* version */)
+void NSModel<SortPolicy>::Serialize(Archive& ar, const unsigned int version)
 {
   ar & data::CreateNVP(treeType, "treeType");
-  ar & data::CreateNVP(leafSize, "leafSize");
-  ar & data::CreateNVP(tau, "tau");
-  ar & data::CreateNVP(rho, "rho");
+  // Backward compatibility: older versions of NSModel didn't include these
+  // parameters.
+  if (version > 0)
+  {
+    ar & data::CreateNVP(leafSize, "leafSize");
+    ar & data::CreateNVP(tau, "tau");
+    ar & data::CreateNVP(rho, "rho");
+  }
   ar & data::CreateNVP(randomBasis, "randomBasis");
   ar & data::CreateNVP(q, "q");
 




More information about the mlpack-git mailing list