[mlpack-svn] r10460 - in mlpack/trunk/src/mlpack: core/utilities tests
fastlab-svn at coffeetalk-1.cc.gatech.edu
fastlab-svn at coffeetalk-1.cc.gatech.edu
Tue Nov 29 21:16:36 EST 2011
Author: nslagle
Date: 2011-11-29 21:16:36 -0500 (Tue, 29 Nov 2011)
New Revision: 10460
Modified:
mlpack/trunk/src/mlpack/core/utilities/save_restore_utility.hpp
mlpack/trunk/src/mlpack/core/utilities/save_restore_utility_impl.hpp
mlpack/trunk/src/mlpack/tests/save_restore_utility_test.cpp
Log:
mlpack/core: add std::vector as a save/load valid type (so long as the templated type is basic, for now)
Modified: mlpack/trunk/src/mlpack/core/utilities/save_restore_utility.hpp
===================================================================
--- mlpack/trunk/src/mlpack/core/utilities/save_restore_utility.hpp 2011-11-30 01:44:15 UTC (rev 10459)
+++ mlpack/trunk/src/mlpack/core/utilities/save_restore_utility.hpp 2011-11-30 02:16:36 UTC (rev 10460)
@@ -11,7 +11,6 @@
#ifndef SAVE_RESTORE_MODEL_HPP
#define SAVE_RESTORE_MODEL_HPP
-#include <err.h>
#include <list>
#include <map>
#include <sstream>
@@ -20,8 +19,8 @@
#include <libxml/parser.h>
#include <libxml/tree.h>
+#include <boost/tokenizer.hpp>
#include <mlpack/core.hpp>
-#include <boost/tokenizer.hpp>
namespace mlpack {
namespace utilities {
@@ -54,6 +53,11 @@
template<typename T>
T& LoadParameter(T& t, std::string name);
/**
+ * LoadParameter loads a parameter from the parameters map.
+ */
+ template<typename T>
+ std::vector<T>& LoadParameter(std::vector<T>& v, std::string name);
+ /**
* LoadParameter loads a character from the parameters map.
*/
char LoadParameter(char c, std::string name);
@@ -71,6 +75,11 @@
template<typename T>
void SaveParameter(T& t, std::string name);
/**
+ * SaveParameter saves a parameter to the parameters map.
+ */
+ template<typename T>
+ void SaveParameter(std::vector<T>& v, std::string name);
+ /**
* SaveParameter saves a character to the parameters map.
*/
void SaveParameter(char c, std::string name);
@@ -79,7 +88,7 @@
*/
void SaveParameter(arma::mat& mat, std::string name);
};
-} /* namespace model */
+} /* namespace utilities */
} /* namespace mlpack */
#include "save_restore_utility_impl.hpp"
Modified: mlpack/trunk/src/mlpack/core/utilities/save_restore_utility_impl.hpp
===================================================================
--- mlpack/trunk/src/mlpack/core/utilities/save_restore_utility_impl.hpp 2011-11-30 01:44:15 UTC (rev 10459)
+++ mlpack/trunk/src/mlpack/core/utilities/save_restore_utility_impl.hpp 2011-11-30 02:16:36 UTC (rev 10460)
@@ -32,9 +32,50 @@
return t;
}
template<typename T>
+std::vector<T>& SaveRestoreUtility::LoadParameter(std::vector<T>& v, std::string name)
+{
+ std::map<std::string, std::string>::iterator it = parameters.find(name);
+ if (it != parameters.end())
+ {
+ v.clear();
+ std::string value = (*it).second;
+ boost::char_separator<char> sep (",");
+ boost::tokenizer<boost::char_separator<char> > tok (value, sep);
+ std::list<std::list<double> > rows;
+ for (boost::tokenizer<boost::char_separator<char> >::iterator
+ tokIt = tok.begin();
+ tokIt != tok.end();
+ ++tokIt)
+ {
+ T t;
+ std::istringstream iss (*tokIt);
+ iss >> t;
+ v.push_back(t);
+ }
+ }
+ else
+ {
+ Log::Fatal << "Failed to load the parameter " << name << std::endl;
+ }
+ return v;
+}
+template<typename T>
void SaveRestoreUtility::SaveParameter(T& t, std::string name)
{
std::ostringstream output;
output << t;
parameters[name] = output.str();
}
+
+template<typename T>
+void SaveRestoreUtility::SaveParameter(std::vector<T>& t, std::string name)
+{
+ std::ostringstream output;
+ for (size_t index = 0; index < t.size(); ++index)
+ {
+ output << t[index] << ",";
+ }
+ std::string vectorAsStr = output.str();
+ vectorAsStr.erase(vectorAsStr.length() - 1);
+ parameters[name] = vectorAsStr;
+}
Modified: mlpack/trunk/src/mlpack/tests/save_restore_utility_test.cpp
===================================================================
--- mlpack/trunk/src/mlpack/tests/save_restore_utility_test.cpp 2011-11-30 01:44:15 UTC (rev 10459)
+++ mlpack/trunk/src/mlpack/tests/save_restore_utility_test.cpp 2011-11-30 02:16:36 UTC (rev 10460)
@@ -100,6 +100,27 @@
delete sRM;
}
+BOOST_AUTO_TEST_CASE(save_restore_std_vector)
+{
+ size_t numbers[] = {0,3,6,2,6};
+ std::vector<size_t> vec (numbers,
+ numbers + sizeof (numbers) / sizeof (size_t));
+ SaveRestoreUtility* sRM = new SaveRestoreUtility();
+
+ sRM->SaveParameter(ARGSTR(vec));
+
+ sRM->WriteFile("test_std_vector_type.xml");
+
+ sRM->ReadFile("test_std_vector_type.xml");
+
+ std::vector<size_t> loadee = sRM->LoadParameter(ARGSTR(vec));
+
+ for (size_t index = 0; index < loadee.size(); ++index)
+ {
+ BOOST_REQUIRE_EQUAL(numbers[index], loadee[index]);
+ }
+}
+
/**
* Test the arma::mat functionality.
*/
More information about the mlpack-svn
mailing list