From f50607ef7451782eb76dabcd763fb5ce91034b9e Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sat, 26 Oct 2019 06:16:18 +0000 Subject: [PATCH] - add more log info - create layers dynamically in main git-svn-id: http://moon:8086/svn/software/trunk/projects/Rbm@583 b431acfa-c32f-4a4a-93f1-934dc6c82436 --- source/RbmLayer.cpp | 1 + source/Stack.cpp | 2 +- source/Stack.hpp | 2 +- source/main.cpp | 25 +++++++++++-------------- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/source/RbmLayer.cpp b/source/RbmLayer.cpp index 7ac6c70..2f63e3b 100644 --- a/source/RbmLayer.cpp +++ b/source/RbmLayer.cpp @@ -24,6 +24,7 @@ RbmLayer::RbmLayer(const string &prjname, size_t id, size_t numVisibleX, size_t , m_numVisibleY(numVisibleY) , m_rbm_params(params) { + cout << "Create Layer " << m_prjname << "::" << to_string((int)m_id) << endl; m_weightsFile = m_prjname + string(".weights.") + to_string((int)m_id) + string(".dat"); } diff --git a/source/Stack.cpp b/source/Stack.cpp index 7f75787..b8fb306 100644 --- a/source/Stack.cpp +++ b/source/Stack.cpp @@ -50,7 +50,7 @@ void Stack::addLayer(RbmLayer *pOtherLayer) } } -const RbmLayer* Stack::getLayer(size_t id) +RbmLayer* Stack::getLayer(size_t id) const { RbmLayer *pLayer = m_pLayers; while(pLayer) diff --git a/source/Stack.hpp b/source/Stack.hpp index 4309a4c..35ee32b 100644 --- a/source/Stack.hpp +++ b/source/Stack.hpp @@ -28,7 +28,7 @@ public: virtual ~Stack(); void addLayer(RbmLayer *pLayer); - const RbmLayer* getLayer(size_t id); + RbmLayer* getLayer(size_t id) const; void save(size_t numTraining); private: diff --git a/source/main.cpp b/source/main.cpp index cacc3d5..bfb2a4b 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -83,6 +83,7 @@ int main() RbmListener statusDisplay; Rbm::Params rbmParams; + Stack stack(project); arma::mat batch = loadTraining(project + string(".training.dat")); @@ -93,21 +94,17 @@ int main() printf("Loaded %d training samples\n", (int)numTraining); - 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); - stack.addLayer(&layer2); - stack.addLayer(&layer3); + for (int i=0; i < 8; i++) + { + RbmLayer *layer = new RbmLayer(project, i, numVisibleX, numVisibleY, numHidden, rbmParams); + stack.addLayer(layer); + } stack.save(numTraining); - - layer0.train(batch, 1000, 100, &statusDisplay); - layer0.saveWeights(); + RbmLayer *layer = stack.getLayer(0); + layer->train(batch, 1000, 100, &statusDisplay); + layer->saveWeights(); arma::mat v = arma::randu(numTraining, numVisibleX*numVisibleY); - arma::mat h = layer0.toHiddenProbs(v); - arma::mat r = layer0.toVisibleProbs(h); + arma::mat h = layer->toHiddenProbs(v); + arma::mat r = layer->toVisibleProbs(h); return 0; }