Home | Develop | Download | Contact
FCLayer.hpp
1 /*
2  * FCLayer.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_FCLAYER_HPP__
33 #define __PDS_FCLAYER_HPP__
34 
35 #include <string>
36 #include <Pds/Ra>
37 #include <Pds/AbstractLayer>
38 
48 namespace Pds{
49 
50 
60 class FCLayer: public AbstractLayer
61 {
62 
63 private:
64  // Número de entradas
65  unsigned int Nin;
66  // Número de salidas
67  unsigned int Nout;
68  // Matriz de pesos
69  Pds::Matrix W;
70  // Funcion de activacion
71  double (*ActFunc)(double);
72  // Derivada de la funcion de activación
73  double (*DActFunc)(double);
74 
75 public:
76 
89  FCLayer(void);
90 
101  FCLayer(unsigned int Nin,unsigned int Nout);
102 
114  FCLayer(unsigned int Nin, unsigned int Nout, double(*func)(double), double(*dfunc)(double));
115 
125  FCLayer(const Pds::Matrix &W);
126 
138  FCLayer(const Pds::Matrix &W, double(*func)(double), double(*dfunc)(double));
139 
140 
148 
149 
151 
156 public:
169  bool Rand(double minval,double maxval);
170 
171 
179  bool SetActFunc(double (*func)(double),double (*dfunc)(double));
180 
185 public:
196  bool IsEmpty(void) const;
197 
203  unsigned int Ninputs(void) const;
204 
210  unsigned int Noutputs(void) const;
211 
212 
218  Pds::Shape GetInputShape(void) const;
219 
220 
226  Pds::Shape GetOutputShape(const Pds::Shape &In) const;
227 
228 
234  std::string WToString(void) const;
235 
236 
242  const Pds::Matrix &GetW(void) const;
243 
249  Pds::Ra::FuncPointer GetActFunc(void) const;
250 
251 
257  Pds::Ra::FuncPointer GetDActFunc(void) const;
263 public:
294  bool ExportXmlToStream(std::ofstream &myfile) const;
295 
320  std::string ExportXmlToString(void) const;
321 
336  bool ImportXmlFromString( const std::string &str);
337 
343  bool SaveInStream(std::ofstream &myfile) const;
344 
345 
346 
361  bool LoadFromStream(std::ifstream &ifs);
366 public:
390  Pds::TensorBlock PredictTensor(const Pds::TensorBlock &In) const;
391 
410  Pds::SampleBlock Predict(const Pds::SampleBlock &In) const;
411 
430  Pds::Vector Predict(const Pds::Vector &In) const;
431 
452  bool Predict(const Pds::Vector &In, Pds::Vector &Out) const;
453 
479  bool Predict(const Pds::Vector &In, Pds::Vector &Out, Pds::Vector &Z) const;
486 public:
505  static bool DeltaBackPropagation( const Pds::Matrix &W,
506  const Pds::Vector &delta_p1,
507  double (*dfunc_m1)(double),
508  const Pds::Vector &z,
509  Pds::Vector &delta);
510 
537  bool WUpdate(double alpham, const Pds::Matrix &Q_1, double lambda=0);
543 public:
554  void Print(std::string str="") const;
555 
560  void PrintStylized(std::string str="") const;
561 
569  unsigned int SummaryLine(unsigned int width=12) const;
570 
575  void MakeEmpty(void);
576 
577 
584  {
585  return new Pds::FCLayer(*this);
586  }
587 
591 }; // Class FCLayer
592 
593 } // namespace Pds
594 
595 
600 #endif
601 
La clase tipo Pds::AbstractLayer . Esta clase genera un objeto con dos parametros Nlin y Ncol....
La clase tipo Pds::FCLayer . Esta clase genera un objeto con dos parametros Nlin y Ncol....
Definition: FCLayer.hpp:61
double(* ActFunc)(double)
Definition: FCLayer.hpp:71
Pds::Matrix W
Definition: FCLayer.hpp:69
unsigned int Nout
Definition: FCLayer.hpp:67
unsigned int Nin
Definition: FCLayer.hpp:65
double(* DActFunc)(double)
Definition: FCLayer.hpp:73
const std::string FCLayer
Tag de un objeto de tipo Pds::FCLayer.
Definition: NnDefines.hpp:149
FCLayer(const Pds::FCLayer &B)
Crea un objeto de tipo Pds::FCLayer copiando datos desde otro.
unsigned int Ninputs(void) const
Retorna el numero de elementos de entrada.
bool ExportXmlToStream(std::ofstream &myfile) const
Salva los datos de la capa en un std::ofstream en formato Xml.
Pds::Ra::FuncPointer GetActFunc(void) const
Retorna la funcion de activación.
bool ImportXmlFromString(const std::string &str)
Carga los datos de la capa.
Pds::Ra::FuncPointer GetDActFunc(void) const
Retorna la derivada de la funcion de activación.
bool Rand(double minval, double maxval)
Carga los pesos con valores aleatorios uniformemente distribuidos desde minval hasta maxval.
bool Predict(const Pds::Vector &In, Pds::Vector &Out) const
Evalua la capa de la CNN.
FCLayer(const Pds::Matrix &W, double(*func)(double), double(*dfunc)(double))
Crea un objeto de tipo Pds::FCLayer con W.Ncol() entradas y W.Nlin() salidas. Usa la función sigmoide...
Pds::Shape GetOutputShape(const Pds::Shape &In) const
Retorna el Shape de salida de la estructura.
void PrintStylized(std::string str="") const
Muestra en pantalla el contenido de Pds::FCLayer, en el formato (Nli,Ncol).
std::string ExportXmlToString(void) const
Salva los datos de la capa en un std::string en formato Xml.
unsigned int Noutputs(void) const
Retorna el numero de elementos de salida.
static bool DeltaBackPropagation(const Pds::Matrix &W, const Pds::Vector &delta_p1, double(*dfunc_m1)(double), const Pds::Vector &z, Pds::Vector &delta)
Calcula el valor de en la capa de la CNN a partir de y .
void MakeEmpty(void)
Limpia el objeto.
const Pds::Matrix & GetW(void) const
Retorna la matriz W.
FCLayer(void)
Crea un objeto de tipo Pds::FCLayer nulo con 0 entradas y 0 salidas. Sin función de activación....
FCLayer(unsigned int Nin, unsigned int Nout, double(*func)(double), double(*dfunc)(double))
Crea un objeto de tipo Pds::FCLayer con Nin entradas y Nout salidas. Los pesos so iniciados con una d...
Pds::Shape GetInputShape(void) const
Retorna el Shape de entrada de la estructura, si no importa el elemento es -1.
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
bool WUpdate(double alpham, const Pds::Matrix &Q_1, double lambda=0)
Calcula y aplica la variación en la capa de la CNN a partir de .
FCLayer(unsigned int Nin, unsigned int Nout)
Crea un objeto de tipo Pds::FCLayer con Nin entradas y Nout salidas. Usa la función sigmoide....
bool SetActFunc(double(*func)(double), double(*dfunc)(double))
Retorna true si la funcion de activacion fue modificada o false si no.
Pds::TensorBlock PredictTensor(const Pds::TensorBlock &In) const
Evalua la capa de la CNN.
Pds::Vector Predict(const Pds::Vector &In) const
Evalua la capa de la CNN.
bool LoadFromStream(std::ifstream &ifs)
Carga los datos de la capa.
FCLayer(const Pds::Matrix &W)
Crea un objeto de tipo Pds::FCLayer con W.Ncol() entradas y W.Nlin() salidas. Usa la función sigmoide...
bool IsEmpty(void) const
Retorna true si la capa esta vacia o false si no.
bool SaveInStream(std::ofstream &myfile) const
Salva los datos de la capa.
std::string WToString(void) const
Retorna como un string la matriz W.
void Print(std::string str="") const
Muestra en pantalla el contenido de Pds::FCLayer, elementos separados por tabulador.
Pds::SampleBlock Predict(const Pds::SampleBlock &In) const
Evalua la capa de la CNN.
bool Predict(const Pds::Vector &In, Pds::Vector &Out, Pds::Vector &Z) const
Evalua la capa de la CNN.
unsigned int SummaryLine(unsigned int width=12) const
Imprime en pantalla una linea con:
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