- 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,
|
"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
@@ -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
@@ -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
@@ -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;
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user