Home | Develop | Download | Contact
FCNn.hpp
1 /*
2  * FCNn.hpp
3  *
4  * Copyright 2018 Fernando Pujaico Rivera <fernando.pujaico.rivera@gmail.com>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19  * MA 02110-1301, USA.
20  *
21  */
22 
32 #ifndef __PDS_FCNN_HPP__
33 #define __PDS_FCNN_HPP__
34 
35 #include <string>
36 #include <Pds/Ra>
37 #include <Pds/FCLayer>
38 #include <Pds/AbstractLayer>
39 
49 namespace Pds{
50 
51 
61 class FCNn: public AbstractLayer
62 {
63 
64 private:
65  // Número de capas (contando la capa de entrada)
66  unsigned int K;
67  // Número de neuronas en cada capa (contando la capa de entrada)
68  std::vector<unsigned int> N;
69  // Valor de las neuronas en cada capa (contando la capa de entrada)
70  std::vector<Pds::Vector> a;
71  // Layer
72  std::vector<Pds::FCLayer> L;
73 public:
74 
87  FCNn(void);
88 
106  FCNn(std::vector<unsigned int> N);
107 
126  FCNn(std::vector<unsigned int> N, double(*func)(double), double(*dfunc)(double));
127 
128 
150  FCNn(std::string filepath);
151 
158  FCNn(const Pds::FCNn &B);
159 
160  ~FCNn();
161 
166 public:
179  bool Rand(double minval,double maxval);
180 
189  bool SetActFunc(unsigned int k,double (*func)(double),double (*dfunc)(double));
190 
198  bool SetActFunc(double (*func)(double),double (*dfunc)(double));
199 
200 
205 public:
220  bool Save(std::string filename);
221 
235  bool Load(std::string filename);
236 
282  std::string ExportXmlToString(void) const;
283 
295  bool ImportXmlFromString( const std::string &str);
296 
343  bool ExportXmlToStream(std::ofstream &myfile) const;
344 
350 public:
364  Pds::TensorBlock PredictTensor(const Pds::TensorBlock &In) const;
365 
366 
374  Pds::SampleBlock Predict(const Pds::SampleBlock &In) const;
375 
389  Pds::Vector Predict(const Pds::Vector &In) const;
390 
391 
392 
393 
435  bool Predict(const Pds::Matrix &XIn, Pds::Matrix &YOut) const;
436 
450  Pds::Vector PredictPlus(const Pds::Vector &In);
451 
467  bool PredictPlus(const Pds::Vector &In, Pds::Vector &Out);
468 
474 public:
541  bool Training(const Pds::Matrix &X,const Pds::Matrix &Y,double alpha,double lambda);
542 
543 
544 
549 public:
560  bool IsEmpty(void) const;
561 
567  unsigned int Ninputs(void) const;
568 
574  unsigned int Noutputs(void) const;
575 
581  unsigned int GetK(void) const;
582 
588  Pds::Shape GetInputShape(void) const;
589 
590 
596  Pds::Shape GetOutputShape(const Pds::Shape &In) const;
597 
603 public:
613  void MakeEmpty(void);
614 
620  void Print(std::string str="") const;
621 
626  void PrintStylized(std::string str="") const;
627 
633  void Summary(unsigned int width=12) const;
634 
642  unsigned int SummaryLine(unsigned int width=12) const;
643 
650  {
651  return new Pds::FCNn(*this);
652  }
653 
657 }; // Class FCNn
658 
659 } // namespace Pds
660 
661 
666 #endif
667 
La clase tipo Pds::AbstractLayer . Esta clase genera un objeto con dos parametros Nlin y Ncol....
La clase tipo Pds::FCNn . Esta clase genera un objeto con dos parametros Nlin y Ncol....
Definition: FCNn.hpp:62
std::vector< Pds::Vector > a
Definition: FCNn.hpp:70
std::vector< unsigned int > N
Definition: FCNn.hpp:68
std::vector< Pds::FCLayer > L
Definition: FCNn.hpp:72
unsigned int K
Definition: FCNn.hpp:66
const std::string FCNn
Tag de un objeto de tipo Pds::FCNn.
Definition: NnDefines.hpp:165
Pds::Shape GetInputShape(void) const
Retorna el Shape de entrada de la estructura, si no importa el elemento es -1.
bool ExportXmlToStream(std::ofstream &myfile) const
Salva los datos de la capa en un std::ofstream en formato Xml.
bool Rand(double minval, double maxval)
Carga los pesos con valores aleatorios uniformemente distribuidos desde minval hasta maxval.
void Summary(unsigned int width=12) const
Imprime en pantalla un sumario de la red neuronal.
unsigned int GetK(void) const
Retorna el número de capas incluyendo la capa de entrada, las ocultas y la de salida.
bool Predict(const Pds::Matrix &XIn, Pds::Matrix &YOut) const
Evalua la capa de la CNN.
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.
Pds::Shape GetOutputShape(const Pds::Shape &In) const
Retorna el Shape de salida de la estructura.
Pds::Vector PredictPlus(const Pds::Vector &In)
Evalua la capa de la CNN.
unsigned int SummaryLine(unsigned int width=12) const
Imprime en pantalla una linea con:
FCNn(std::vector< unsigned int > N, double(*func)(double), double(*dfunc)(double))
Crea un objeto de tipo Pds::FCNn con Nin entradas y Nout salidas. Los pesos so iniciados con una dist...
std::string ExportXmlToString(void) const
Salva los datos de la capa en un std::string en formato Xml.
bool SetActFunc(unsigned int k, double(*func)(double), double(*dfunc)(double))
Retorna true si la funcion de activacion fue modificada o false si no.
void Print(std::string str="") const
Muestra en pantalla el contenido de Pds::FCNn, elementos separados por tabulador.
bool IsEmpty(void) const
Retorna true si la red está vacia o false si no.
bool ImportXmlFromString(const std::string &str)
Carga los datos de la capa.
bool SetActFunc(double(*func)(double), double(*dfunc)(double))
Retorna true si las funciones de activacion fueron modificadas o false si no.
void PrintStylized(std::string str="") const
Muestra en pantalla el contenido de Pds::FCNn, en el formato (Nli,Ncol).
Pds::Vector Predict(const Pds::Vector &In) const
Evalua la capa de la CNN.
bool Load(std::string filename)
Carga los datos desde un archivo de texto.
unsigned int Noutputs(void) const
Retorna el número de elementos de salida.
void MakeEmpty(void)
Limpia el objeto.
bool PredictPlus(const Pds::Vector &In, Pds::Vector &Out)
Evalua la capa de la CNN.
FCNn(std::vector< unsigned int > N)
Crea un objeto de tipo Pds::FCNn con Nin entradas y Nout salidas. Usa la función sigmoide....
Pds::AbstractLayer * Clone(void)
Retorna un puntero (generado con new) a una nuevo dirección de memoria con una copia del objeto actua...
Definition: FCNn.hpp:649
bool Save(std::string filename)
Salva los datos en un archivo de texto.
FCNn(void)
Crea un objeto de tipo Pds::FCNn nulo con 0 entradas y 0 salidas. Sin función de activación....
Pds::TensorBlock PredictTensor(const Pds::TensorBlock &In) const
Evalua la capa de la CNN.
FCNn(std::string filepath)
Crea un objeto de tipo Pds::FCNn desde un archivo de entrada. es el número de capas incluyendo la ca...
unsigned int Ninputs(void) const
Retorna el número de elementos de entrada.
FCNn(const Pds::FCNn &B)
Crea un objeto de tipo Pds::FCNn copiando datos desde otro.
Nombre de espacion para PDS (Procesamiento Digital de Senales)
Definition: FCLayer.hpp:48

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed