IO class as parrent of Solution and Problem

This commit is contained in:
2014-12-03 18:58:28 +01:00
parent 41c92cc3c0
commit 993b4d3f04
14 changed files with 134 additions and 62 deletions

View File

@@ -33,7 +33,7 @@ int main()
s.push_back(Shin::NeuronNetwork::Solution(std::vector<float>({1})));
p.push_back(X(std::vector<float>({1,1})));
Shin::NeuronNetwork::FeedForwardNetworkQuick q({2,4,1});
Shin::NeuronNetwork::FeedForwardNetworkQuick q({2,2,4,1});
Shin::NeuronNetwork::Learning::BackPropagation b(q);
b.debugOn();

View File

@@ -22,7 +22,7 @@ int main()
for (int test=0;test<2;test++)
{
Shin::NeuronNetwork::FeedForwardNetworkQuick q({2,40,1});
Shin::NeuronNetwork::FeedForwardNetworkQuick q({2,3,1});
Shin::NeuronNetwork::Learning::BackPropagation b(q);
srand(time(NULL));
@@ -49,7 +49,7 @@ int main()
{
std::cerr << "Testing without entropy\n";
}
b.setLearningCoeficient(0.1);//8);
b.setLearningCoeficient(20);//8);
for(int j=0;;j++)
{
double err=b.teachSet(p,s);

View File

@@ -23,19 +23,19 @@ int main()
srand(time(NULL));
for (int test=0;test<3;test++)
{
Shin::NeuronNetwork::FeedForwardNetworkQuick q({2,6,1});
Shin::NeuronNetwork::FeedForwardNetworkQuick q({2,4,1});
Shin::NeuronNetwork::Learning::Reinforcement b(q);
b.setPropagator(new Shin::NeuronNetwork::Learning::OpticalBackPropagation(q));
b.getPropagator().setLearningCoeficient(0.9);
b.getPropagator().allowEntropy();
double targetQuality =1.7;
//b.setPropagator(new Shin::NeuronNetwork::Learning::OpticalBackPropagation(q));
b.getPropagator().setLearningCoeficient(3);
//b.getPropagator().allowEntropy();
double targetQuality =1;
if(test==2)
{
targetQuality =1.62;
std::cerr << "Testing with OBP ...\n";
b.setPropagator(new Shin::NeuronNetwork::Learning::OpticalBackPropagation(q));
b.getPropagator().setLearningCoeficient(3);
b.getPropagator().setLearningCoeficient(0.5);
}
b.setQualityFunction(
[](const Shin::NeuronNetwork::Problem &pr,const Shin::NeuronNetwork::Solution &s)->float
@@ -55,15 +55,15 @@ int main()
if(expect==0)
{
expect=0.33-s[0];
expect=0.1-abs(s[0]);
}else
{
expect=s[0]-0.67;
expect=s[0]-0.9;
}
// std::cerr << " returnning " << expect*5.0 << "\n";
return expect*9.0;
return expect*19.0;
});
std::vector<Shin::NeuronNetwork::Problem*> p;
@@ -86,7 +86,6 @@ int main()
// for(int i=0;i < 5;i++)
{
double err=b.learnSet(p);
if(i%100000==0)
srand(time(NULL));
if(i%200000==0 || err > targetQuality)