- 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:
+3
-72
@@ -18,80 +18,11 @@
|
||||
"learningRate" : 0.10000000000000001,
|
||||
"momentum" : 0.5,
|
||||
"numGibbs" : 1,
|
||||
"weightDecay" : 0,
|
||||
"weightInit" : 0.01
|
||||
}
|
||||
"weightDecay" : 0
|
||||
},
|
||||
"weightInit" : 0.01
|
||||
},
|
||||
"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"
|
||||
|
||||
+4
-3
@@ -13,13 +13,14 @@
|
||||
|
||||
#include "Rbm.hpp"
|
||||
|
||||
Rbm::Rbm(size_t numVisible, size_t numHidden)
|
||||
Rbm::Rbm(size_t numVisible, size_t numHidden, double weightInit)
|
||||
: m_params()
|
||||
, m_weightInit(weightInit)
|
||||
, m_w(numVisible, numHidden)
|
||||
, m_bv(1, numVisible)
|
||||
, m_bh(1, numHidden)
|
||||
{
|
||||
weightsInit(0.0, m_params.weightInit);
|
||||
weightsInit(0.0, m_weightInit);
|
||||
}
|
||||
|
||||
Rbm::Rbm(const Rbm& orig)
|
||||
@@ -52,11 +53,11 @@ Json::Value Rbm::toJson() const
|
||||
Json::Value rbm;
|
||||
rbm["numVisible"] = m_bv.n_elem;
|
||||
rbm["numHidden"] = m_bh.n_elem;
|
||||
rbm["weightInit"] = m_weightInit;
|
||||
rbm["params"] = m_params.toJson();
|
||||
return rbm;
|
||||
}
|
||||
|
||||
|
||||
void Rbm::train(const arma::mat& batch, size_t miniBatchSize, size_t numEpochs, IListener* pListener)
|
||||
{
|
||||
Status status;
|
||||
|
||||
+3
-6
@@ -26,9 +26,8 @@ public:
|
||||
struct Params
|
||||
{
|
||||
Params()
|
||||
: weightInit(0.01)
|
||||
: learningRate(0.1)
|
||||
, weightDecay(0.0)
|
||||
, learningRate(0.1)
|
||||
, momentum(0.5)
|
||||
, doRaoBlackwell(true)
|
||||
, gibbsDoSampleVisible(false)
|
||||
@@ -42,7 +41,6 @@ public:
|
||||
{
|
||||
std::cout << "Exporting Rbm::Params" << std::endl;
|
||||
Json::Value params;
|
||||
params["weightInit"] = weightInit;
|
||||
params["weightDecay"] = weightDecay;
|
||||
params["learningRate"] = learningRate;
|
||||
params["momentum"] = momentum;
|
||||
@@ -57,7 +55,6 @@ public:
|
||||
|
||||
void fromJson(Json::Value params)
|
||||
{
|
||||
weightInit = params["weightInit"].asDouble();
|
||||
weightDecay = params["weightDecay"].asDouble();
|
||||
learningRate = params["learningRate"].asDouble();
|
||||
momentum = params["momentum"].asDouble();
|
||||
@@ -68,7 +65,6 @@ public:
|
||||
numGibbs = params["numGibbs"].asUInt();
|
||||
}
|
||||
|
||||
double weightInit;
|
||||
double weightDecay;
|
||||
double learningRate;
|
||||
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);
|
||||
virtual ~Rbm();
|
||||
|
||||
@@ -132,6 +128,7 @@ public:
|
||||
|
||||
private:
|
||||
const Params m_params;
|
||||
double m_weightInit;
|
||||
arma::mat sample(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);
|
||||
|
||||
+1
-1
@@ -149,7 +149,7 @@ bool RbmLayer::saveWeights(const string &prjname)
|
||||
|
||||
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;
|
||||
layer["name"] = m_name;
|
||||
layer["id"] = (int)m_id;
|
||||
|
||||
Reference in New Issue
Block a user