From 03a6624017330f576df78008c37a3615e425a912 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Mon, 10 Jan 2022 15:48:51 +0000 Subject: [PATCH] - Layer: removed legacy weights load/save git-svn-id: http://moon:8086/svn/software/trunk/projects/Rbm@777 b431acfa-c32f-4a4a-93f1-934dc6c82436 --- source/Layer.cpp | 103 ++++++++++------------------------------------- source/Layer.hpp | 38 +---------------- source/Stack.cpp | 31 ++++++-------- 3 files changed, 36 insertions(+), 136 deletions(-) diff --git a/source/Layer.cpp b/source/Layer.cpp index 1799bb1..c8f1959 100644 --- a/source/Layer.cpp +++ b/source/Layer.cpp @@ -43,99 +43,38 @@ Layer::~Layer() { } - -bool Layer::loadWeights(const string &prjname) +bool Layer::weightsLoad(std::string const &dir, std::string const &prj) { - string filename = filePrefix(prjname) + ".weights.dat"; + arma::mat w; + 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); - FILE *pFile = fopen(filename.c_str(),"r"); - if (!pFile) + if (result) { - std::cout << "loadWeights(): Could not open " << filename << " for reading!" << std::endl; - return false; + std::cout << "Layer " << m_id << ": Importing weights" << std::endl; + weightsAssign(w, bh, bv); } - std::cout << "Importing weights for " << m_name << "." << to_string((int)m_id) << std::endl; - - size_t numVisible = Rbm::numVisible(); - size_t numHidden = Rbm::numHidden(); - int i, j; - float v; - int result; - arma::mat _bv(1, numVisible); - for (i=0; i < numVisible; i++) - { - result = fscanf(pFile, "%f", &v); - if (result > 0) - { - _bv(i) = v; - } - } - arma::mat _bhv(1, numHidden); - for (i=0; i < numHidden; i++) - { - result = fscanf(pFile, "%f", &v); - if (result > 0) - { - _bhv(i) = v; - } - } - arma::mat _whv(numVisible, numHidden); - for (i=0; i < numVisible; i++) - { - for (j=0; j < numHidden; j++) - { - - result = fscanf(pFile, "%f", &v); - if (result > 0) - { - _whv(i, j) = v; - } - } - } - weightsAssign(_whv, _bhv, _bv); - fclose(pFile); - - return true; + return result; } - -bool Layer::saveWeights(const string &prjname) + +bool Layer::weightsSave(std::string const &dir, std::string const &prj) { - int numHidden = m_bhv.n_elem; - int numVisible = m_bv.n_elem; - string filename = filePrefix(prjname) + ".weights.dat"; + 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); - FILE *pFile = fopen(filename.c_str(),"w"); - if (!pFile) + if (result) { - std::cout << "saveWeights(): Could not open " << filename << " for writing!" << std::endl; - return false; + std::cout << "Layer " << m_id << ": Exporting weights" << std::endl; } - std::cout << "Exporting weights for " << m_name << "." << to_string((int)m_id) << std::endl; - - int i, j; - - for (i=0; i < numVisible; i++) - { - fprintf(pFile, "%3.6f\n", m_bv(i)); - } - for (i=0; i < numHidden; i++) - { - fprintf(pFile, "%3.6f\n", m_bhv(i)); - } - const arma::mat &_whv = whv(); - for (i=0; i < numVisible; i++) - { - for (j=0; j < numHidden; j++) - { - fprintf(pFile, "%3.6f ", _whv(i,j)); - } - fprintf(pFile, "\n"); - } - fclose(pFile); - - return true; + return result; } Json::Value Layer::toJson() const diff --git a/source/Layer.hpp b/source/Layer.hpp index 68e61cb..889b1d7 100644 --- a/source/Layer.hpp +++ b/source/Layer.hpp @@ -81,42 +81,8 @@ public: return whv().n_cols; } - bool weightsLoad(std::string const &dir, std::string const &prj) - { - arma::mat w; - 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); - - if (result) - { - std::cout << "Layer " << m_id << ": Importing weights" << std::endl; - weightsAssign(w, bh, bv); - } - else - { - return loadWeights(prj); - } - return true; - } - - bool 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); - - if (result) - { - std::cout << "Layer " << m_id << ": Exporting weights" << std::endl; - } - - return result; - } + bool weightsLoad(std::string const &dir, std::string const &prj); + bool weightsSave(std::string const &dir, std::string const &prj); arma::mat trainingData(arma::mat const &batch) { diff --git a/source/Stack.cpp b/source/Stack.cpp index cea8a22..b732e0a 100644 --- a/source/Stack.cpp +++ b/source/Stack.cpp @@ -233,21 +233,19 @@ arma::mat Stack::trainingBatch(Layer* pThatLayer) size_t Stack::loadTrainingBatch(bool doNormalize) { - { - std::string path = m_dir + "/" + m_name + ".training.mat"; - bool success = m_trainingBatch.load(path, arma::arma_ascii); + std::string filename = m_dir + "/" + m_name + ".training.dat"; + std::string path = m_dir + "/" + m_name + ".training.dat"; + bool success = m_trainingBatch.load(filename, arma::arma_ascii); - if (success) - { - std::cout << "Loaded " << m_trainingBatch.n_rows << " training samples\n"; - return m_trainingBatch.n_rows; - } + if (success) + { + std::cout << "Loaded " << m_trainingBatch.n_rows << " training samples\n"; + return m_trainingBatch.n_rows; } uint32_t numTraining = 0; uint32_t numVisible = 0; - std::string filename = m_dir + "/" + m_name + ".training.dat"; FILE *pFile = fopen(filename.c_str(), "r"); if (!pFile) @@ -293,18 +291,15 @@ size_t Stack::loadTrainingBatch(bool doNormalize) size_t Stack::saveTrainingBatch() { - { - std::string path = m_dir + "/" + m_name + ".training.mat"; - bool success = m_trainingBatch.save(path, arma::arma_ascii); + std::string filename = m_dir + "/" + m_name + ".training.dat"; + bool success = m_trainingBatch.save(filename, arma::arma_ascii); - if (success) - { - std::cout << "Saved " << m_trainingBatch.n_rows << " training samples\n"; - return m_trainingBatch.n_rows; - } + if (success) + { + std::cout << "Saved " << m_trainingBatch.n_rows << " training samples\n"; + return m_trainingBatch.n_rows; } - std::string filename = m_dir + "/" + m_name + ".training.dat"; FILE *pFile = fopen(filename.c_str(), "w"); if (!pFile)