From d16f0de8faebda747747d443512f26124fca594a Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sat, 26 Oct 2019 06:07:13 +0000 Subject: [PATCH] - rename Layer into RbmLayer - add some log info on toJson() git-svn-id: http://moon:8086/svn/software/trunk/projects/Rbm@582 b431acfa-c32f-4a4a-93f1-934dc6c82436 --- Makefile | 2 +- source/Rbm.cpp | 1 + source/Rbm.hpp | 3 +++ source/{Layer.cpp => RbmLayer.cpp} | 17 +++++++++-------- source/{Layer.hpp => RbmLayer.hpp} | 18 +++++++++--------- source/Stack.cpp | 11 ++++++----- source/Stack.hpp | 8 ++++---- source/main.cpp | 10 +++++----- 8 files changed, 38 insertions(+), 32 deletions(-) rename source/{Layer.cpp => RbmLayer.cpp} (81%) rename source/{Layer.hpp => RbmLayer.hpp} (69%) diff --git a/Makefile b/Makefile index 9ee8741..0a063c4 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ CONFIG ?= release -SRCS := source/main.cpp source/Rbm.cpp source/Layer.cpp source/Stack.cpp +SRCS := source/main.cpp source/Rbm.cpp source/RbmLayer.cpp source/Stack.cpp LIBS := -larmadillo -ljsoncpp diff --git a/source/Rbm.cpp b/source/Rbm.cpp index 5cd14cb..775a4c2 100644 --- a/source/Rbm.cpp +++ b/source/Rbm.cpp @@ -48,6 +48,7 @@ void Rbm::fromJson(Json::Value params) Json::Value Rbm::toJson() const { + std::cout << "Exporting Rbm" << std::endl; Json::Value rbm; rbm["numVisible"] = m_bv.n_elem; rbm["numHidden"] = m_bh.n_elem; diff --git a/source/Rbm.hpp b/source/Rbm.hpp index 4e41d0b..d72df94 100644 --- a/source/Rbm.hpp +++ b/source/Rbm.hpp @@ -14,6 +14,8 @@ #ifndef RBM_HPP #define RBM_HPP +#include + #include #include @@ -38,6 +40,7 @@ public: Json::Value toJson() const { + std::cout << "Exporting Rbm::Params" << std::endl; Json::Value params; params["weightInit"] = weightInit; params["weightDecay"] = weightDecay; diff --git a/source/Layer.cpp b/source/RbmLayer.cpp similarity index 81% rename from source/Layer.cpp rename to source/RbmLayer.cpp index 3ce69ba..7ac6c70 100644 --- a/source/Layer.cpp +++ b/source/RbmLayer.cpp @@ -11,10 +11,10 @@ * Created on 25. Oktober 2019, 08:13 */ -#include "Layer.hpp" +#include "RbmLayer.hpp" using namespace std; -Layer::Layer(const string &prjname, size_t id, size_t numVisibleX, size_t numVisibleY, size_t numHidden, const Rbm::Params ¶ms) +RbmLayer::RbmLayer(const string &prjname, size_t id, size_t numVisibleX, size_t numVisibleY, size_t numHidden, const Rbm::Params ¶ms) : Rbm(params, numVisibleX*numVisibleY, numHidden) , upper(nullptr) , lower(nullptr) @@ -27,7 +27,7 @@ Layer::Layer(const string &prjname, size_t id, size_t numVisibleX, size_t numVis m_weightsFile = m_prjname + string(".weights.") + to_string((int)m_id) + string(".dat"); } -Layer::Layer(const Layer& orig) +RbmLayer::RbmLayer(const RbmLayer& orig) : Rbm(orig.m_rbm_params, orig.bv().n_elem, orig.bh().n_elem) , upper(nullptr) , lower(nullptr) @@ -40,11 +40,11 @@ Layer::Layer(const Layer& orig) { } -Layer::~Layer() +RbmLayer::~RbmLayer() { } -void Layer::saveWeights() +void RbmLayer::saveWeights() { FILE *pFile = fopen(m_weightsFile.c_str(), "w"); @@ -81,8 +81,9 @@ void Layer::saveWeights() } -Json::Value Layer::toJson() const +Json::Value RbmLayer::toJson() const { + std::cout << "Exporting RbmLayer " << to_string((int)m_id) << std::endl; Json::Value layer; layer["name"] = string("Layer ") + to_string((int)m_id); layer["weights_file"] = m_weightsFile; @@ -94,7 +95,7 @@ Json::Value Layer::toJson() const } -arma::mat Layer::up_pass(const arma::mat &hidden) +arma::mat RbmLayer::up_pass(const arma::mat &hidden) { arma::mat reconstruction = toVisibleProbs(hidden); if (upper) @@ -104,7 +105,7 @@ arma::mat Layer::up_pass(const arma::mat &hidden) return toHiddenProbs(reconstruction); } -arma::mat Layer::down_pass(const arma::mat &visible) +arma::mat RbmLayer::down_pass(const arma::mat &visible) { arma::mat hidden = toHiddenProbs(visible); if (lower) diff --git a/source/Layer.hpp b/source/RbmLayer.hpp similarity index 69% rename from source/Layer.hpp rename to source/RbmLayer.hpp index efb2adb..ef45256 100644 --- a/source/Layer.hpp +++ b/source/RbmLayer.hpp @@ -11,8 +11,8 @@ * Created on 25. Oktober 2019, 08:13 */ -#ifndef LAYER_HPP -#define LAYER_HPP +#ifndef RBMLAYER_HPP +#define RBMLAYER_HPP #include @@ -21,15 +21,15 @@ #include "Rbm.hpp" #include "ILayer.hpp" -class Layer : public Rbm +class RbmLayer : public Rbm { public: - Layer *upper; - Layer *lower; + RbmLayer *upper; + RbmLayer *lower; - Layer(const std::string &prjname, size_t id, size_t numVisibleX, size_t numVisibleY, size_t numHidden, const Rbm::Params ¶ms); - Layer(const Layer& orig); - virtual ~Layer(); + RbmLayer(const std::string &prjname, size_t id, size_t numVisibleX, size_t numVisibleY, size_t numHidden, const Rbm::Params ¶ms); + RbmLayer(const RbmLayer& orig); + virtual ~RbmLayer(); Json::Value toJson() const; void saveWeights(); @@ -52,5 +52,5 @@ private: }; -#endif /* LAYER_HPP */ +#endif /* RBMLAYER_HPP */ diff --git a/source/Stack.cpp b/source/Stack.cpp index 63b4388..7f75787 100644 --- a/source/Stack.cpp +++ b/source/Stack.cpp @@ -31,7 +31,7 @@ Stack::~Stack() { } -void Stack::addLayer(Layer *pOtherLayer) +void Stack::addLayer(RbmLayer *pOtherLayer) { if (!m_pLayers) { @@ -40,7 +40,7 @@ void Stack::addLayer(Layer *pOtherLayer) } else { - Layer *pLayer = m_pLayers; + RbmLayer *pLayer = m_pLayers; while(pLayer->upper) { pLayer = pLayer->upper; @@ -50,9 +50,9 @@ void Stack::addLayer(Layer *pOtherLayer) } } -const Layer* Stack::getLayer(size_t id) +const RbmLayer* Stack::getLayer(size_t id) { - Layer *pLayer = m_pLayers; + RbmLayer *pLayer = m_pLayers; while(pLayer) { if (pLayer->id() == id) @@ -67,6 +67,7 @@ const Layer* Stack::getLayer(size_t id) void Stack::save(size_t numTraining) { + std::cout << "Exporting Project " << m_prjname << std::endl; ofstream ofs(m_prjname + string(".prj")); Json::StyledWriter writer; @@ -76,7 +77,7 @@ void Stack::save(size_t numTraining) project["stack"]["training_file"] = m_prjname + string(".training.dat"); Json::Value layers(Json::arrayValue); - Layer *pLayer = m_pLayers; + RbmLayer *pLayer = m_pLayers; while(pLayer) { layers.append(pLayer->toJson()); diff --git a/source/Stack.hpp b/source/Stack.hpp index 51cc9f8..4309a4c 100644 --- a/source/Stack.hpp +++ b/source/Stack.hpp @@ -18,7 +18,7 @@ #include #include #include -#include "Layer.hpp" +#include "RbmLayer.hpp" class Stack { @@ -27,13 +27,13 @@ public: Stack(const Stack& orig); virtual ~Stack(); - void addLayer(Layer *pLayer); - const Layer* getLayer(size_t id); + void addLayer(RbmLayer *pLayer); + const RbmLayer* getLayer(size_t id); void save(size_t numTraining); private: const std::string &m_prjname; - Layer *m_pLayers; + RbmLayer *m_pLayers; }; diff --git a/source/main.cpp b/source/main.cpp index 0aceea8..cacc3d5 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -7,7 +7,7 @@ #include #include #include "Rbm.hpp" -#include "Layer.hpp" +#include "RbmLayer.hpp" #include "Stack.hpp" using namespace std; @@ -93,10 +93,10 @@ int main() printf("Loaded %d training samples\n", (int)numTraining); - Layer layer0(project, 0, numVisibleX, numVisibleY, numHidden, rbmParams); - Layer layer1(project, 1, numVisibleX, numVisibleY, numHidden, rbmParams); - Layer layer2(project, 2, numVisibleX, numVisibleY, numHidden, rbmParams); - Layer layer3(project, 3, numVisibleX, numVisibleY, numHidden, rbmParams); + RbmLayer layer0(project, 0, numVisibleX, numVisibleY, numHidden, rbmParams); + RbmLayer layer1(project, 1, numVisibleX, numVisibleY, numHidden, rbmParams); + RbmLayer layer2(project, 2, numVisibleX, numVisibleY, numHidden, rbmParams); + RbmLayer layer3(project, 3, numVisibleX, numVisibleY, numHidden, rbmParams); Stack stack(project); stack.addLayer(&layer0); stack.addLayer(&layer1);