Home | Develop | Download | Contact
example_fcnn_training.cpp
1 
27 #include <Pds/Ra>
28 #include <Pds/Nn>
29 
30 int main(void)
31 {
32  unsigned int M=8000;
33  Pds::Vector Acc(M);
34  std::string str;
35 
36  Pds::Matrix X(Pds::Ra::TextFormat,"../test/data_x_yinyang.txt");
37  Pds::Matrix Y(Pds::Ra::TextFormat,"../test/data_y_yinyang.txt");
38  Pds::Matrix Ys(Y.Size());
39 
40  std::vector<unsigned int> N={2,5,11,23,11,5,1};
41  Pds::FCNn NN0=Pds::FCNn(N,Pds::Tanh,Pds::DTanh);
42 
43  Y=2*Y.Geq(0.5)-1.0;
44 
45  for(unsigned int k=0;k<M;k++)
46  {
47  NN0.Training(X,Y,0.1,0.01);
48 
49  bool res=NN0.Predict(X,Ys);
50  if(res==false) std::cout<<"res==false"<<std::endl;
51 
52  Acc.Set(k,100.0*Pds::Accuracy(Ys,Y,0.1));
53 
54  // Progress bar
55  str="acc: "+std::to_string(Acc.At(k));
56  Pds::Ra::ProgressBarWithTime(32,k,M,false,str);
57  }
58  std::cout<<std::endl;
59 
60  NN0.Save("../test/NeuralNetwork1.txt");
61 
62  // Ploting
63  Pds::Octave::XLabel="Iter";
64  Pds::Octave::YLabel="Accuracy";
65  Pds::Octave::Plot::CurveXY(Pds::LinSpace(0,M-1,M),Acc,"testando_acc.m","example_fcnn_training_Acc.png");
66 
67  Pds::Octave::XLabel="x_1";
68  Pds::Octave::YLabel="x_2";
69  Pds::Octave::Plot::PointsX2DY(X ,Y ,"testando_y.m","example_fcnn_training_Y.png");
70  Pds::Octave::Plot::PointsX2DY(X,Ys,"testando_ys.m","example_fcnn_training_Ys.png");
71  return 0;
72 }
La clase tipo Pds::FCNn . Esta clase genera un objeto con dos parametros Nlin y Ncol....
Definition: FCNn.hpp:62
const std::string FCNn
Tag de un objeto de tipo Pds::FCNn.
Definition: NnDefines.hpp:165
bool Training(const Pds::Matrix &X, const Pds::Matrix &Y, double alpha, double lambda)
Treina la NN como um bloque de datos entero X para encontrar una variacion de pesos.
Pds::SampleBlock Predict(const Pds::SampleBlock &In) const
Evalua la capa de la CNN.
bool Save(std::string filename)
Salva los datos en un archivo de texto.

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed