- train layer instead of stack

- fixed downPass upPass

git-svn-id: http://moon:8086/svn/software/trunk/projects/Rbm@645 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2019-11-08 18:23:56 +00:00
parent 8d9b16c634
commit 9b1084bda9
4 changed files with 71 additions and 83 deletions
+3 -51
View File
@@ -26,33 +26,6 @@
#include "Layer.hpp"
//[/Headers]
class IRbmComponent
{
public:
IRbmComponent *upper;
IRbmComponent *lower;
IRbmComponent()
: upper(nullptr)
, lower(nullptr)
{}
virtual ~IRbmComponent()
{
}
virtual void downPass(arma::mat &dst, arma::mat const &src) = 0;
virtual void upPass(arma::mat const &v) = 0;
void registerRbm(IRbmComponent *pObj)
{
lower = pObj;
pObj->upper = this;
}
virtual arma::mat const& getTopWeights() = 0;
virtual arma::mat getConvolutedWeight(arma::mat const &h) = 0;
virtual arma::mat const& getWeights() = 0;
};
//==============================================================================
/**
//[Comments]
@@ -64,7 +37,6 @@ public:
class RbmComponent : public Component
, public Layer
, public DrawListener
, public IRbmComponent
{
public:
//==============================================================================
@@ -93,30 +65,10 @@ public:
void redrawReconstruction();
void downPass(arma::mat &dst, arma::mat const &src) override
{
DrawHidden->getData() = toHiddenProbs(src);
if (lower)
{
lower->downPass(DrawHidden->getData(), DrawHidden->getData());
}
dst = toVisibleProbs(DrawHidden->getData());
DrawHidden->DrawData();
}
void upPass(arma::mat const &h) override
{
DrawReconstruction->getData() = toVisibleProbs(h);
DrawReconstruction->DrawData();
if (upper)
{
upper->upPass(DrawReconstruction->getData());
}
}
void downPass(arma::mat const &v);
void upPass(arma::mat const &v);
arma::mat const& getTopWeights() override;
arma::mat getConvolutedWeight(arma::mat const &h) override;
arma::mat const& getWeights() override;
arma::mat getConvolutedWeight(arma::mat const &h);
ScopedPointer<DrawComponent> DrawTraining;
ScopedPointer<DrawComponent> DrawHidden;