- 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:
2019-11-06 06:24:48 +00:00
parent 3ef7b07f5e
commit b20604e4f4
4 changed files with 21 additions and 9 deletions
+3 -3
View File
@@ -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;
}
+1
View File
@@ -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
View File
@@ -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
View File
@@ -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);