- refactored

git-svn-id: http://moon:8086/svn/software/trunk/projects/Rbm@594 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2019-10-28 20:05:58 +00:00
parent 8a37ee6a69
commit 0f1631fe60
6 changed files with 34 additions and 34 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
CONFIG ?= release
SRCS := source/main.cpp source/Rbm.cpp source/RbmLayer.cpp source/Stack.cpp
SRCS := source/main.cpp source/Rbm.cpp source/Layer.cpp source/Stack.cpp
LIBS := -larmadillo -ljsoncpp
+9 -9
View File
@@ -11,10 +11,10 @@
* Created on 25. Oktober 2019, 08:13
*/
#include "RbmLayer.hpp"
#include "Layer.hpp"
using namespace std;
RbmLayer::RbmLayer(const string &name, size_t id, size_t numVisibleX, size_t numVisibleY, size_t numHidden)
Layer::Layer(const string &name, size_t id, size_t numVisibleX, size_t numVisibleY, size_t numHidden)
: Rbm(numVisibleX*numVisibleY, numHidden)
, upper(nullptr)
, lower(nullptr)
@@ -27,7 +27,7 @@ RbmLayer::RbmLayer(const string &name, size_t id, size_t numVisibleX, size_t num
m_weightsFile = m_name + "." + to_string((int)m_id) + string(".weights.dat");
}
RbmLayer::RbmLayer(const RbmLayer& orig)
Layer::Layer(const Layer& orig)
: Rbm(orig.bv().n_elem, orig.bh().n_elem)
, upper(nullptr)
, lower(nullptr)
@@ -39,11 +39,11 @@ RbmLayer::RbmLayer(const RbmLayer& orig)
{
}
RbmLayer::~RbmLayer()
Layer::~Layer()
{
}
bool RbmLayer::loadWeights(const string &prjname)
bool Layer::loadWeights(const string &prjname)
{
int numVisibleX;
int numVisibleY;
@@ -105,7 +105,7 @@ bool RbmLayer::loadWeights(const string &prjname)
return true;
}
bool RbmLayer::saveWeights(const string &prjname)
bool Layer::saveWeights(const string &prjname)
{
string filename = m_weightsFile;
if (prjname.size() > 0)
@@ -147,7 +147,7 @@ bool RbmLayer::saveWeights(const string &prjname)
return true;
}
Json::Value RbmLayer::toJson() const
Json::Value Layer::toJson() const
{
std::cout << "Exporting Layer " << to_string((int)m_id) << std::endl;
Json::Value layer;
@@ -163,7 +163,7 @@ Json::Value RbmLayer::toJson() const
}
arma::mat RbmLayer::up_pass(const arma::mat &hidden)
arma::mat Layer::up_pass(const arma::mat &hidden)
{
arma::mat reconstruction = toVisibleProbs(hidden);
if (upper)
@@ -173,7 +173,7 @@ arma::mat RbmLayer::up_pass(const arma::mat &hidden)
return toHiddenProbs(reconstruction);
}
arma::mat RbmLayer::down_pass(const arma::mat &visible)
arma::mat Layer::down_pass(const arma::mat &visible)
{
arma::mat hidden = toHiddenProbs(visible);
if (lower)
+6 -6
View File
@@ -21,15 +21,15 @@
#include "Rbm.hpp"
#include "ILayer.hpp"
class RbmLayer : public Rbm
class Layer : public Rbm
{
public:
RbmLayer *upper;
RbmLayer *lower;
Layer *upper;
Layer *lower;
RbmLayer(const std::string &prjname, size_t id, size_t numVisibleX, size_t numVisibleY, size_t numHidden);
RbmLayer(const RbmLayer& orig);
virtual ~RbmLayer();
Layer(const std::string &prjname, size_t id, size_t numVisibleX, size_t numVisibleY, size_t numHidden);
Layer(const Layer& orig);
virtual ~Layer();
Json::Value toJson() const;
bool loadWeights(const std::string &prjname="");
+10 -10
View File
@@ -31,7 +31,7 @@ Stack::~Stack()
{
}
void Stack::addLayer(RbmLayer *pOtherLayer)
void Stack::addLayer(Layer *pOtherLayer)
{
if (!m_pLayers)
{
@@ -40,7 +40,7 @@ void Stack::addLayer(RbmLayer *pOtherLayer)
}
else
{
RbmLayer *pLayer = m_pLayers;
Layer *pLayer = m_pLayers;
while(pLayer->upper)
{
pLayer = pLayer->upper;
@@ -50,9 +50,9 @@ void Stack::addLayer(RbmLayer *pOtherLayer)
}
}
RbmLayer* Stack::getLayer(size_t layerId) const
Layer* Stack::getLayer(size_t layerId) const
{
RbmLayer *pLayer = m_pLayers;
Layer *pLayer = m_pLayers;
while(pLayer)
{
if (pLayer->id() == layerId)
@@ -86,7 +86,7 @@ bool Stack::load()
int numVisibleY = layer["numVisibleY"].asInt();
int numHidden = layer["numHidden"].asInt();
addLayer(new RbmLayer(layername, i, numVisibleX, numVisibleY, numHidden));
addLayer(new Layer(layername, i, numVisibleX, numVisibleY, numHidden));
}
return true;
@@ -102,7 +102,7 @@ bool Stack::save()
project["stack"]["name"] = m_prjname;
Json::Value layers(Json::arrayValue);
RbmLayer *pLayer = m_pLayers;
Layer *pLayer = m_pLayers;
while(pLayer)
{
layers.append(pLayer->toJson());
@@ -117,7 +117,7 @@ bool Stack::save()
bool Stack::loadWeights()
{
RbmLayer *pLayer = m_pLayers;
Layer *pLayer = m_pLayers;
while(pLayer)
{
if (!pLayer->loadWeights(m_prjname))
@@ -131,7 +131,7 @@ bool Stack::loadWeights()
bool Stack::saveWeights()
{
RbmLayer *pLayer = m_pLayers;
Layer *pLayer = m_pLayers;
while(pLayer)
{
if (!pLayer->saveWeights(m_prjname))
@@ -145,7 +145,7 @@ bool Stack::saveWeights()
void Stack::train(const arma::mat& batch, size_t miniBatchSize, size_t numEpochs, Rbm::IListener* pListener)
{
RbmLayer *pLayer = m_pLayers;
Layer *pLayer = m_pLayers;
while(pLayer)
{
train(pLayer->id(), batch, miniBatchSize, numEpochs, pListener);
@@ -156,7 +156,7 @@ void Stack::train(const arma::mat& batch, size_t miniBatchSize, size_t numEpochs
void Stack::train(size_t layerId, const arma::mat& batch, size_t miniBatchSize, size_t numEpochs, Rbm::IListener* pListener)
{
arma::mat thisBatch = batch;
RbmLayer *pLayer = m_pLayers;
Layer *pLayer = m_pLayers;
while(pLayer)
{
if (pLayer->id() == layerId)
+4 -4
View File
@@ -18,7 +18,7 @@
#include <vector>
#include <armadillo>
#include <jsoncpp/json/json.h>
#include "RbmLayer.hpp"
#include "Layer.hpp"
class Stack
{
@@ -27,8 +27,8 @@ public:
Stack(const Stack& orig);
virtual ~Stack();
void addLayer(RbmLayer *pLayer);
RbmLayer* getLayer(size_t layerId) const;
void addLayer(Layer *pLayer);
Layer* getLayer(size_t layerId) const;
void train(size_t layerId, const arma::mat& batch, size_t miniBatchSize, size_t numEpochs, Rbm::IListener* pListener);
void train(const arma::mat& batch, size_t miniBatchSize, size_t numEpochs, Rbm::IListener* pListener);
@@ -39,7 +39,7 @@ public:
private:
const std::string &m_prjname;
RbmLayer *m_pLayers;
Layer *m_pLayers;
};
+4 -4
View File
@@ -7,7 +7,7 @@
#include <armadillo>
#include <jsoncpp/json/json.h>
#include "Rbm.hpp"
#include "RbmLayer.hpp"
#include "Layer.hpp"
#include "Stack.hpp"
using namespace std;
@@ -95,14 +95,14 @@ int main()
size_t numHidden = 256;
int i=0;
RbmLayer *lowerLayer = new RbmLayer("Layer", i, numVisibleX, numVisibleY, numHidden);
Layer *lowerLayer = new Layer("Layer", i, numVisibleX, numVisibleY, numHidden);
stack.addLayer(lowerLayer);
numHidden >>= 1;
i++;
for (i; i < 1; i++)
{
RbmLayer *layer = new RbmLayer("Layer", i, lowerLayer->bh().n_elem, 1, numHidden);
Layer *layer = new Layer("Layer", i, lowerLayer->bh().n_elem, 1, numHidden);
lowerLayer = layer;
stack.addLayer(layer);
numHidden >>= 1;
@@ -123,7 +123,7 @@ int main()
// Save weights
stack.saveWeights();
RbmLayer *layer = stack.getLayer(0);
Layer *layer = stack.getLayer(0);
arma::mat v = arma::randu(numTraining, layer->bv().n_elem);
arma::mat h = layer->toHiddenProbs(v);
arma::mat r = layer->toVisibleProbs(h);