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 
100  FCLayer(unsigned int Nin,unsigned int Nout);
101 
113  FCLayer(unsigned int Nin, unsigned int Nout, double(*func)(double), double(*dfunc)(double));
114 
124  FCLayer(const Pds::Matrix &W);
125 
137  FCLayer(const Pds::Matrix &W, double(*func)(double), double(*dfunc)(double));
138 
139 
147 
148 
150 
155 public:
168  bool Rand(double minval,double maxval);
169 
174 public:
185  bool IsEmpty(void) const;
186 
192  unsigned int Ninputs(void) const;
193 
199  unsigned int Noutputs(void) const;
200 
206  std::string WToString(void) const;
207 
213  unsigned long int FuncActToULInt(void) const;
214 
220  unsigned long int DFuncActToULInt(void) const;
221 
229  bool SetFuncAct(double (*func)(double),double (*dfunc)(double));
230 
236 public:
246  bool SaveInStream(std::ofstream &myfile) const;
247 
252  bool LoadFromStream(std::ifstream &ifs);
253 
260  bool LoadFromStream(std::ifstream &ifs,double (*func)(double),double (*dfunc)(double));
265 public:
276  Pds::Vector Evaluate(const Pds::Vector &In) const;
277 
284  bool Evaluate(const Pds::Vector &In, Pds::Vector &Out) const;
285 
293  bool Evaluate(const Pds::Vector &In, Pds::Vector &Out, Pds::Vector &Z) const;
300 public:
316  bool DeltaPropagation(const Pds::Vector &delta,const Pds::Vector &z_1, Pds::Vector &delta_1) const;
317 
328  bool DeltaPropagationSigmoid(const Pds::Vector &delta,const Pds::Vector &a_1, Pds::Vector &delta_1) const;
329 
356  bool WUpdate(double alpham, const Pds::Matrix &Q_1, double lambda=0);
362 public:
373  void Print(std::string str="") const;
374 
379  void PrintStylized(std::string str="") const;
380 
385  void MakeEmpty(void);
389 }; // Class FCLayer
390 
391 } // namespace Pds
392 
393 
398 #endif
399 
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