- weightInit are construction time parameter

git-svn-id: http://moon:8086/svn/software/trunk/projects/Rbm@593 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2019-10-28 20:04:39 +00:00
parent 43dc764daa
commit 8a37ee6a69
5 changed files with 14 additions and 85 deletions
+3 -72
View File
@@ -18,80 +18,11 @@
"learningRate" : 0.10000000000000001, "learningRate" : 0.10000000000000001,
"momentum" : 0.5, "momentum" : 0.5,
"numGibbs" : 1, "numGibbs" : 1,
"weightDecay" : 0, "weightDecay" : 0
"weightInit" : 0.01 },
} "weightInit" : 0.01
}, },
"weights_file" : "Layer.0.weights.dat" "weights_file" : "Layer.0.weights.dat"
},
{
"id" : 1,
"name" : "Layer",
"numHidden" : 128,
"numVisibleX" : 256,
"numVisibleY" : 1,
"rbm" : {
"numHidden" : 128,
"numVisible" : 256,
"params" : {
"doRaoBlackwell" : 1,
"doSampleBatch" : 0,
"gibbsDoSampleHidden" : 1,
"gibbsDoSampleVisible" : 0,
"learningRate" : 0.10000000000000001,
"momentum" : 0.5,
"numGibbs" : 1,
"weightDecay" : 0,
"weightInit" : 0.01
}
},
"weights_file" : "Layer.1.weights.dat"
},
{
"id" : 2,
"name" : "Layer",
"numHidden" : 64,
"numVisibleX" : 128,
"numVisibleY" : 1,
"rbm" : {
"numHidden" : 64,
"numVisible" : 128,
"params" : {
"doRaoBlackwell" : 1,
"doSampleBatch" : 0,
"gibbsDoSampleHidden" : 1,
"gibbsDoSampleVisible" : 0,
"learningRate" : 0.10000000000000001,
"momentum" : 0.5,
"numGibbs" : 1,
"weightDecay" : 0,
"weightInit" : 0.01
}
},
"weights_file" : "Layer.2.weights.dat"
},
{
"id" : 3,
"name" : "Layer",
"numHidden" : 32,
"numVisibleX" : 64,
"numVisibleY" : 1,
"rbm" : {
"numHidden" : 32,
"numVisible" : 64,
"params" : {
"doRaoBlackwell" : 1,
"doSampleBatch" : 0,
"gibbsDoSampleHidden" : 1,
"gibbsDoSampleVisible" : 0,
"learningRate" : 0.10000000000000001,
"momentum" : 0.5,
"numGibbs" : 1,
"weightDecay" : 0,
"weightInit" : 0.01
}
},
"weights_file" : "Layer.3.weights.dat"
} }
], ],
"name" : "mnist_2" "name" : "mnist_2"
+4 -3
View File
@@ -13,13 +13,14 @@
#include "Rbm.hpp" #include "Rbm.hpp"
Rbm::Rbm(size_t numVisible, size_t numHidden) Rbm::Rbm(size_t numVisible, size_t numHidden, double weightInit)
: m_params() : m_params()
, m_weightInit(weightInit)
, m_w(numVisible, numHidden) , m_w(numVisible, numHidden)
, m_bv(1, numVisible) , m_bv(1, numVisible)
, m_bh(1, numHidden) , m_bh(1, numHidden)
{ {
weightsInit(0.0, m_params.weightInit); weightsInit(0.0, m_weightInit);
} }
Rbm::Rbm(const Rbm& orig) Rbm::Rbm(const Rbm& orig)
@@ -52,11 +53,11 @@ Json::Value Rbm::toJson() const
Json::Value rbm; Json::Value rbm;
rbm["numVisible"] = m_bv.n_elem; rbm["numVisible"] = m_bv.n_elem;
rbm["numHidden"] = m_bh.n_elem; rbm["numHidden"] = m_bh.n_elem;
rbm["weightInit"] = m_weightInit;
rbm["params"] = m_params.toJson(); rbm["params"] = m_params.toJson();
return rbm; return rbm;
} }
void Rbm::train(const arma::mat& batch, size_t miniBatchSize, size_t numEpochs, IListener* pListener) void Rbm::train(const arma::mat& batch, size_t miniBatchSize, size_t numEpochs, IListener* pListener)
{ {
Status status; Status status;
+3 -6
View File
@@ -26,9 +26,8 @@ public:
struct Params struct Params
{ {
Params() Params()
: weightInit(0.01) : learningRate(0.1)
, weightDecay(0.0) , weightDecay(0.0)
, learningRate(0.1)
, momentum(0.5) , momentum(0.5)
, doRaoBlackwell(true) , doRaoBlackwell(true)
, gibbsDoSampleVisible(false) , gibbsDoSampleVisible(false)
@@ -42,7 +41,6 @@ public:
{ {
std::cout << "Exporting Rbm::Params" << std::endl; std::cout << "Exporting Rbm::Params" << std::endl;
Json::Value params; Json::Value params;
params["weightInit"] = weightInit;
params["weightDecay"] = weightDecay; params["weightDecay"] = weightDecay;
params["learningRate"] = learningRate; params["learningRate"] = learningRate;
params["momentum"] = momentum; params["momentum"] = momentum;
@@ -57,7 +55,6 @@ public:
void fromJson(Json::Value params) void fromJson(Json::Value params)
{ {
weightInit = params["weightInit"].asDouble();
weightDecay = params["weightDecay"].asDouble(); weightDecay = params["weightDecay"].asDouble();
learningRate = params["learningRate"].asDouble(); learningRate = params["learningRate"].asDouble();
momentum = params["momentum"].asDouble(); momentum = params["momentum"].asDouble();
@@ -68,7 +65,6 @@ public:
numGibbs = params["numGibbs"].asUInt(); numGibbs = params["numGibbs"].asUInt();
} }
double weightInit;
double weightDecay; double weightDecay;
double learningRate; double learningRate;
double momentum; double momentum;
@@ -112,7 +108,7 @@ public:
} }
}; };
Rbm(size_t numVisible, size_t numHidden); Rbm(size_t numVisible, size_t numHidden, double weightInit=0.01);
Rbm(const Rbm& orig); Rbm(const Rbm& orig);
virtual ~Rbm(); virtual ~Rbm();
@@ -132,6 +128,7 @@ public:
private: private:
const Params m_params; const Params m_params;
double m_weightInit;
arma::mat sample(arma::mat const &src); arma::mat sample(arma::mat const &src);
static arma::mat probsLogistic(arma::mat const &src); static arma::mat probsLogistic(arma::mat const &src);
void uniform(arma::mat &srcDst, double mu=0.0, double stdDev=1.0); void uniform(arma::mat &srcDst, double mu=0.0, double stdDev=1.0);
+1 -1
View File
@@ -149,7 +149,7 @@ bool RbmLayer::saveWeights(const string &prjname)
Json::Value RbmLayer::toJson() const Json::Value RbmLayer::toJson() const
{ {
std::cout << "Exporting RbmLayer " << to_string((int)m_id) << std::endl; std::cout << "Exporting Layer " << to_string((int)m_id) << std::endl;
Json::Value layer; Json::Value layer;
layer["name"] = m_name; layer["name"] = m_name;
layer["id"] = (int)m_id; layer["id"] = (int)m_id;
+3 -3
View File
@@ -18,9 +18,9 @@
"learningRate" : 0.10000000000000001, "learningRate" : 0.10000000000000001,
"momentum" : 0.5, "momentum" : 0.5,
"numGibbs" : 1, "numGibbs" : 1,
"weightDecay" : 0, "weightDecay" : 0
"weightInit" : 0.01 },
} "weightInit" : 0.01
}, },
"weights_file" : "Layer.0.weights.dat" "weights_file" : "Layer.0.weights.dat"
} }