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 
47 namespace Pds{
48 
49 
59 class FCLayer
60 {
61 
62 private:
63  // Número de entradas
64  unsigned int Nin;
65  // Número de salidas
66  unsigned int Nout;
67  // Matriz de pesos
68  Pds::Matrix W;
69  // Funcion de activacion
70  double (*FuncAct)(double);
71  // Derivada de la funcion de activación
72  double (*DFuncAct)(double);
73 
74 public:
75 
88  FCLayer(void);
89 
99  FCLayer(unsigned int Nin,unsigned int Nout);
100 
111  FCLayer(unsigned int Nin, unsigned int Nout, double(*func)(double), double(*dfunc)(double));
112 
121  FCLayer(const Pds::Matrix &W);
122 
133  FCLayer(const Pds::Matrix &W, double(*func)(double), double(*dfunc)(double));
134 
135 
143 
144 
146 
151 public:
164  bool Rand(double minval,double maxval);
165 
170 public:
181  bool IsEmpty(void) const;
182 
188  unsigned int Ninputs(void) const;
189 
195  unsigned int Noutputs(void) const;
196 
202  std::string WToString(void) const;
203 
209  unsigned long int FuncActToULInt(void) const;
210 
216  unsigned long int DFuncActToULInt(void) const;
217 
225  bool SetFuncAct(double (*func)(double),double (*dfunc)(double));
226 
232 public:
242  bool SaveInStream(std::ofstream &myfile) const;
243 
248  bool LoadFromStream(std::ifstream &ifs);
249 
256  bool LoadFromStream(std::ifstream &ifs,double (*func)(double),double (*dfunc)(double));
261 public:
272  Pds::Vector Evaluate(const Pds::Vector &In) const;
273 
280  bool Evaluate(const Pds::Vector &In, Pds::Vector &Out) const;
281 
289  bool Evaluate(const Pds::Vector &In, Pds::Vector &Out, Pds::Vector &Z) const;
296 public:
312  bool DeltaPropagation(const Pds::Vector &delta,const Pds::Vector &z_1, Pds::Vector &delta_1) const;
313 
324  bool DeltaPropagationSigmoid(const Pds::Vector &delta,const Pds::Vector &a_1, Pds::Vector &delta_1) const;
325 
352  bool WUpdate(double alpham, const Pds::Matrix &Q_1, double lambda=0);
358 public:
369  void Print(std::string str="") const;
370 
375  void PrintStylized(std::string str="") const;
376 
381  void MakeEmpty(void);
385 }; // Class FCLayer
386 
387 } // namespace Pds
388 
389 
394 #endif
395 
La clase tipo Pds::FCLayer . Esta clase genera un objeto con dos parametros Nlin y Ncol....
Definition: FCLayer.hpp:60
double(* DFuncAct)(double)
Definition: FCLayer.hpp:72
Pds::Matrix W
Definition: FCLayer.hpp:68
unsigned int Nout
Definition: FCLayer.hpp:66
unsigned int Nin
Definition: FCLayer.hpp:64
double(* FuncAct)(double)
Definition: FCLayer.hpp:70
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.
Pds::Vector Evaluate(const Pds::Vector &In) const
Evalua la capa de la CNN.
bool Rand(double minval, double maxval)
Carga los pesos con valores aleatorios uniformemente distribuidos desde minval hasta maxval.
bool Evaluate(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...
void PrintStylized(std::string str="") const
Muestra en pantalla el contenido de Pds::FCLayer, en el formato (Nli,Ncol).
bool SetFuncAct(double(*func)(double), double(*dfunc)(double))
Retorna true si la funcion de activacion fue modificada o false si no.
bool DeltaPropagation(const Pds::Vector &delta, const Pds::Vector &z_1, Pds::Vector &delta_1) const
Calcula el valor de en la capa de la CNN a partir de y .
bool DeltaPropagationSigmoid(const Pds::Vector &delta, const Pds::Vector &a_1, Pds::Vector &delta_1) const
Calcula el valor de en la capa de la CNN a partir de y .
unsigned int Noutputs(void) const
Retorna el numero de elementos de salida.
void MakeEmpty(void)
Limpia el objeto.
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...
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 .
bool LoadFromStream(std::ifstream &ifs, double(*func)(double), double(*dfunc)(double))
Carga los datos de la capa.
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 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.
bool Evaluate(const Pds::Vector &In, Pds::Vector &Out, Pds::Vector &Z) const
Evalua la capa de la CNN.
unsigned long int DFuncActToULInt(void) const
Retorna el numero de la direccion de la derivada de la funcion de activacion.
unsigned long int FuncActToULInt(void) const
Retorna el numero de la direccion de la funcion de activacion.
Nombre de espacion para PDS (Procesamiento Digital de Senales)
Definition: FCLayer.hpp:47

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed