Home | Develop | Download | Contact
example_customcnn_create.cpp

Programa para el testeo de las funciones Fully Connected Layer.Para compilar o código example_customcnn_create.cpp:

g++ -static -o example_customcnn_create example_customcnn_create.cpp -lpdsramm -lpdsnnmm

Para executar o programa:

./example_customcnn_create

Retornando por consola:

Código example_customcnn_create.cpp:

#include <Pds/Ra>
#include <Pds/Nn>
Pds::CustomCNn GenerateModel( unsigned int Nch,
unsigned int Nlin,
unsigned int Ncol)
{
Pds::CustomCNn Model(Nch,Nlin,Ncol);
Pds::Conv2DLayer Conv1(3,16,Pds::Size(3,3),Pds::ReLU, Pds::DReLU,{1, 1},Pds::Ra::Valid);
Model.Add(Conv1.Clone());
Model.Add(Max.Clone());
Pds::Conv2DLayer Conv2(16, 8,Pds::Size(3,3),Pds::ReLU, Pds::DReLU,{1, 1},Pds::Ra::Valid);
Model.Add(Conv2.Clone());
Model.Add(Max.Clone());
Pds::Conv2DLayer Conv3(8, 4,Pds::Size(3,3),Pds::ReLU, Pds::DReLU,{1, 1},Pds::Ra::Valid);
Model.Add(Conv3.Clone());
Model.Add(Max.Clone());
Pds::Conv2DLayer Conv4(4, 2,Pds::Size(3,3),Pds::Tanh, Pds::DTanh,{1, 1},Pds::Ra::Valid);
Model.Add(Conv4.Clone());
Model.Add(Flat.Clone());
Pds::FCLayer FC1(2048,2048,Pds::Tanh,Pds::DTanh);
Model.Add(FC1.Clone());
Pds::FCLayer FC2(2048,512,Pds::Tanh,Pds::DTanh);
Model.Add(FC2.Clone());
Pds::FCLayer FC3(512,3,Pds::Sigmoid,Pds::DSigmoid);
Model.Add(FC3.Clone());
return Model;
}
int main(void)
{
unsigned int Nch=3;
unsigned int Nlin=284;
unsigned int Ncol=Nlin;
Pds::CustomCNn Model=GenerateModel(Nch,Nlin,Ncol);
Model.Print("Model:\n");
Pds::SampleBlock Img=Pds::Matrix::ImportBmpFile("../manual/imagenes/pimienta284.bmp");
Pds::TensorBlock Block={Img};
Block=Model.PredictTensor(Block);
for(unsigned int n=0;n<Block.size();n++)
for(unsigned int m=0;m<Block[n].size();m++)
Block[n][m].Print("\nBlock["+std::to_string(n)+"]["+std::to_string(m)+"]:\n");
std::ofstream myfile("Model.xml", std::ofstream::out);
Model.ExportXmlToStream(myfile);
myfile.close();
return 0;
}
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.
bool Add(Pds::AbstractLayer *Layer)
Agrega una layer a la CustomCNn.
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...
Definition: FCLayer.hpp:583
Pds::AbstractLayer * Clone(void)
Retorna un puntero (generado con new) a una nuevo dirección de memoria con una copia del objeto actua...
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