diff --git a/source/Layer.cpp b/source/Layer.cpp index c8f1959..bb024b7 100644 --- a/source/Layer.cpp +++ b/source/Layer.cpp @@ -49,9 +49,9 @@ bool Layer::weightsLoad(std::string const &dir, std::string const &prj) arma::mat bh; arma::mat bv; bool result = true; - result &= w.load(filePrefix(prj) + ".w.dat", arma::arma_ascii); - result &= bh.load(filePrefix(prj) + ".bh.dat", arma::arma_ascii); - result &= bv.load(filePrefix(prj) + ".bv.dat", arma::arma_ascii); + result &= w.load(filePrefix(dir, prj) + ".w.dat", arma::arma_ascii); + result &= bh.load(filePrefix(dir, prj) + ".bh.dat", arma::arma_ascii); + result &= bv.load(filePrefix(dir, prj) + ".bv.dat", arma::arma_ascii); if (result) { @@ -65,9 +65,9 @@ bool Layer::weightsLoad(std::string const &dir, std::string const &prj) bool Layer::weightsSave(std::string const &dir, std::string const &prj) { bool result = true; - result &= whv().save(filePrefix(prj) + ".w.dat", arma::arma_ascii); - result &= bh().save(filePrefix(prj) + ".bh.dat", arma::arma_ascii); - result &= bv().save(filePrefix(prj) + ".bv.dat", arma::arma_ascii); + result &= whv().save(filePrefix(dir, prj) + ".w.dat", arma::arma_ascii); + result &= bh().save(filePrefix(dir, prj) + ".bh.dat", arma::arma_ascii); + result &= bv().save(filePrefix(dir, prj) + ".bv.dat", arma::arma_ascii); if (result) { @@ -83,7 +83,6 @@ Json::Value Layer::toJson() const Json::Value layer; layer["name"] = m_name; layer["id"] = (int)m_id; - layer["weights_file"] = filePrefix("") + ".weights.dat"; layer["numVisibleX"] = (int)m_numVisibleX; layer["numVisibleY"] = (int)m_numVisibleY; layer["numHidden"] = (int)whv().n_cols; diff --git a/source/Layer.hpp b/source/Layer.hpp index 889b1d7..b3ced1b 100644 --- a/source/Layer.hpp +++ b/source/Layer.hpp @@ -141,14 +141,14 @@ private: // Compatibility bool loadWeights(const std::string &prjname=""); bool saveWeights(const std::string &prjname=""); - std::string filePrefix(const std::string &prjname) const + std::string filePrefix(const std::string &dir, const std::string &prjname) const { std::string filename = m_name + "." + std::to_string((int)m_id); if (prjname.size() > 0) { filename = prjname + "." + filename; } - return filename; + return dir + "/" + filename; } }; diff --git a/source/Stack.cpp b/source/Stack.cpp index 3ff5992..0ec4004 100644 --- a/source/Stack.cpp +++ b/source/Stack.cpp @@ -244,8 +244,8 @@ size_t Stack::loadTrainingBatch(bool doNormalize) m_trainingBatch = Rbm::normalize(m_trainingBatch); } std::cout << "Loaded " << m_trainingBatch.n_rows << " training samples\n"; - return m_trainingBatch.n_rows; } + return m_trainingBatch.n_rows; } size_t Stack::saveTrainingBatch() @@ -256,8 +256,9 @@ size_t Stack::saveTrainingBatch() if (success) { std::cout << "Saved " << m_trainingBatch.n_rows << " training samples\n"; - return m_trainingBatch.n_rows; } + + return m_trainingBatch.n_rows; } size_t Stack::numTraining() diff --git a/source/main.cpp b/source/main.cpp index 158af96..f0631aa 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -80,7 +80,7 @@ int main() const string project("test"); RbmListener statusDisplay; - Stack stack(project); + Stack stack(".", project); stack.loadTrainingBatch(); diff --git a/test.prj b/test.prj index fcac3c8..059ceee 100644 --- a/test.prj +++ b/test.prj @@ -21,8 +21,7 @@ "numGibbs" : 1, "weightDecay" : 0.0 } - }, - "weights_file" : "Layer.0.weights.dat" + } }, { "id" : 1, @@ -40,12 +39,55 @@ "learningRate" : 0.050000000000000003, "miniBatchSize" : 100, "momentum" : 0.5, - "numEpochs" : 5000, + "numEpochs" : 500, "numGibbs" : 1, "weightDecay" : 0.0 } - }, - "weights_file" : "Layer.1.weights.dat" + } + }, + { + "id" : 2, + "name" : "Layer", + "numContext" : 0, + "numHidden" : 2, + "numVisibleX" : 4, + "numVisibleY" : 1, + "rbm" : { + "params" : { + "doRaoBlackwell" : 1, + "doSampleBatch" : 0, + "gibbsDoSampleHidden" : 1, + "gibbsDoSampleVisible" : 0, + "learningRate" : 0.025000000000000001, + "miniBatchSize" : 100, + "momentum" : 0.5, + "numEpochs" : 250, + "numGibbs" : 1, + "weightDecay" : 0.0 + } + } + }, + { + "id" : 3, + "name" : "Layer", + "numContext" : 0, + "numHidden" : 1, + "numVisibleX" : 2, + "numVisibleY" : 1, + "rbm" : { + "params" : { + "doRaoBlackwell" : 1, + "doSampleBatch" : 0, + "gibbsDoSampleHidden" : 1, + "gibbsDoSampleVisible" : 0, + "learningRate" : 0.012500000000000001, + "miniBatchSize" : 100, + "momentum" : 0.5, + "numEpochs" : 125, + "numGibbs" : 1, + "weightDecay" : 0.0 + } + } } ], "name" : "test"