Home | Develop | Download | Contact
example_customcnn_create.cpp
1 
20 #include <Pds/Ra>
21 #include <Pds/Nn>
22 
23 Pds::CustomCNn GenerateModel( unsigned int Nch,
24  unsigned int Nlin,
25  unsigned int Ncol)
26 {
27  Pds::MaxPoolingLayer Max(2,2);
28  Pds::FlattenLayer Flat;
29 
30  Pds::CustomCNn Model(Nch,Nlin,Ncol);
31 
32  Pds::Conv2DLayer Conv1(3,16,Pds::Size(3,3),Pds::ReLU, Pds::DReLU,{1, 1},Pds::Ra::Valid);
33  Model.Add(Conv1.Clone());
34 
35  Model.Add(Max.Clone());
36 
37  Pds::Conv2DLayer Conv2(16, 8,Pds::Size(3,3),Pds::ReLU, Pds::DReLU,{1, 1},Pds::Ra::Valid);
38  Model.Add(Conv2.Clone());
39 
40  Model.Add(Max.Clone());
41 
42  Pds::Conv2DLayer Conv3(8, 4,Pds::Size(3,3),Pds::ReLU, Pds::DReLU,{1, 1},Pds::Ra::Valid);
43  Model.Add(Conv3.Clone());
44 
45  Model.Add(Max.Clone());
46 
47  Pds::Conv2DLayer Conv4(4, 2,Pds::Size(3,3),Pds::Tanh, Pds::DTanh,{1, 1},Pds::Ra::Valid);
48  Model.Add(Conv4.Clone());
49 
50  Model.Add(Flat.Clone());
51 
52  Pds::FCLayer FC1(2048,2048,Pds::Tanh,Pds::DTanh);
53  Model.Add(FC1.Clone());
54 
55  Pds::FCLayer FC2(2048,512,Pds::Tanh,Pds::DTanh);
56  Model.Add(FC2.Clone());
57 
58  Pds::FCLayer FC3(512,3,Pds::Sigmoid,Pds::DSigmoid);
59  Model.Add(FC3.Clone());
60 
61  return Model;
62 }
63 
64 
65 int main(void)
66 {
67  unsigned int Nch=3;
68  unsigned int Nlin=284;
69  unsigned int Ncol=Nlin;
70 
71  Pds::CustomCNn Model=GenerateModel(Nch,Nlin,Ncol);
72  Model.Print("Model:\n");
73 
74  Pds::SampleBlock Img=Pds::Matrix::ImportBmpFile("../manual/imagenes/pimienta284.bmp");
75 
76  Pds::TensorBlock Block={Img};
77 
78  Block=Model.PredictTensor(Block);
79 
80  for(unsigned int n=0;n<Block.size();n++)
81  for(unsigned int m=0;m<Block[n].size();m++)
82  Block[n][m].Print("\nBlock["+std::to_string(n)+"]["+std::to_string(m)+"]:\n");
83 
84 
85  std::ofstream myfile("Model.xml", std::ofstream::out);
86  Model.ExportXmlToStream(myfile);
87  myfile.close();
88 
89  return 0;
90 }
La clase tipo Pds::Conv2DLayer . Esta clase genera un objeto con parametros. Para usar incluir <Pds/C...
Definition: Conv2DLayer.hpp:61
La clase tipo Pds::CustomCNn . Esta clase genera un objeto con layers. Para usar incluir <Pds/CustomC...
Definition: CustomCNn.hpp:60
La clase tipo Pds::FCLayer . Esta clase genera un objeto con dos parametros Nlin y Ncol....
Definition: FCLayer.hpp:61
La clase tipo Pds::FlattenLayer . Esta clase genera un objeto con dos parametros Nlin y Ncol....
La clase tipo Pds::MaxPoolingLayer . Esta clase genera un objeto con dos parametros Nlin y Ncol....
Pds::TensorBlock PredictTensor(const Pds::TensorBlock &In)
Evalua la CustomCNn.
bool ExportXmlToStream(std::ofstream &myfile) const
Salva los datos de la capa en un std::ofstream en formato Xml.
void Print(std::string str="") const
Muestra en pantalla el contenido de Pds::CustomCNn, elementos separados por tabulador.
Pds::AbstractLayer * Clone(void)
Retorna un puntero (generado con new) a una nuevo dirección de memoria con una copia del objeto actua...

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed