- Rbm: fixed parameter import
git-svn-id: http://moon:8086/svn/software/trunk/projects/Rbm@607 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
+3
-3
@@ -43,16 +43,16 @@ void Rbm::weightsInit(double stddev, double mu)
|
||||
|
||||
}
|
||||
|
||||
void Rbm::fromJson(Json::Value params)
|
||||
void Rbm::fromJson(Json::Value rbm)
|
||||
{
|
||||
std::cout << "Importing Rbm" << std::endl;
|
||||
m_params.fromJson(rbm["params"]);
|
||||
}
|
||||
|
||||
Json::Value Rbm::toJson() const
|
||||
{
|
||||
std::cout << "Exporting Rbm" << std::endl;
|
||||
Json::Value rbm;
|
||||
rbm["numVisible"] = m_bv.n_elem;
|
||||
rbm["numHidden"] = m_bh.n_elem;
|
||||
rbm["params"] = m_params.toJson();
|
||||
return rbm;
|
||||
}
|
||||
|
||||
@@ -60,6 +60,7 @@ public:
|
||||
|
||||
void fromJson(Json::Value params)
|
||||
{
|
||||
std::cout << "Importing Rbm::Params" << std::endl;
|
||||
weightDecay = params["weightDecay"].asDouble();
|
||||
learningRate = params["learningRate"].asDouble();
|
||||
momentum = params["momentum"].asDouble();
|
||||
|
||||
+3
-2
@@ -85,8 +85,9 @@ bool Stack::load()
|
||||
int numVisibleX = layer["numVisibleX"].asInt();
|
||||
int numVisibleY = layer["numVisibleY"].asInt();
|
||||
int numHidden = layer["numHidden"].asInt();
|
||||
|
||||
addLayer(new Layer(layername, i, numVisibleX, numVisibleY, numHidden));
|
||||
Layer *pLayer = new Layer(layername, i, numVisibleX, numVisibleY, numHidden);
|
||||
pLayer->fromJson(layer["rbm"]);
|
||||
addLayer(pLayer);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
+14
-4
@@ -89,20 +89,29 @@ int main()
|
||||
size_t numTraining = batch.n_rows;
|
||||
printf("Loaded %d training samples\n", (int)numTraining);
|
||||
|
||||
#if 1
|
||||
#if 0
|
||||
int i = 0;
|
||||
Layer *lowerLayer = new Layer("Layer", i, 16, 16, 8);
|
||||
stack.addLayer(lowerLayer);
|
||||
|
||||
for (++i; i < 1; i++)
|
||||
for (++i; i < 4; i++)
|
||||
{
|
||||
Layer *layer = new Layer("Layer", i, lowerLayer->bh().n_elem, 1, lowerLayer->bh().n_elem >> 1);
|
||||
lowerLayer = layer;
|
||||
stack.addLayer(layer);
|
||||
}
|
||||
|
||||
Layer *layer = stack.getLayer(0);
|
||||
layer->params().learningRate = 0.02;
|
||||
stack.getLayer(0)->params().learningRate = 0.04;
|
||||
stack.getLayer(0)->params().numEpochs = 1000;
|
||||
|
||||
stack.getLayer(1)->params().learningRate = 0.03;
|
||||
stack.getLayer(1)->params().numEpochs = 500;
|
||||
|
||||
stack.getLayer(2)->params().learningRate = 0.02;
|
||||
stack.getLayer(2)->params().numEpochs = 250;
|
||||
|
||||
stack.getLayer(3)->params().learningRate = 0.01;
|
||||
stack.getLayer(3)->params().numEpochs = 125;
|
||||
|
||||
// Save project
|
||||
stack.save();
|
||||
@@ -127,6 +136,7 @@ int main()
|
||||
// Save weights
|
||||
stack.saveWeights();
|
||||
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user