Home | Develop | Download | Contact
Namespaces | Estructuras de datos
Métodos Pds::FCLayer

Metodos de la clase Pds::FCLayer, una única capa de una Full Connected Neural Network. Más...

Namespaces

namespace  Pds
 Nombre de espacion para PDS (Procesamiento Digital de Senales)
 

Estructuras de datos

class  Pds::FCLayer
 La clase tipo Pds::FCLayer . Esta clase genera un objeto con dos parametros Nlin y Ncol. Para usar incluir Pds/FCLayer. Más...
 

Varios tipos de constructores

Crean una objeto Pds::FCLayer

 Pds::FCLayer::FCLayer (void)
 Crea un objeto de tipo Pds::FCLayer nulo con 0 entradas y 0 salidas. Sin función de activación. Matriz de pesos vazia. Más...
 
 Pds::FCLayer::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. Los pesos so iniciados con una distribución normal com desvio igual a 1. Más...
 
 Pds::FCLayer::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 distribución normal com desvio igual a 1. Más...
 
 Pds::FCLayer::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. Los pesos son iniciados desde la matriz W. Más...
 
 Pds::FCLayer::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. Los pesos son iniciados desde la matriz W. Más...
 
 Pds::FCLayer::FCLayer (const Pds::FCLayer &B)
 Crea un objeto de tipo Pds::FCLayer copiando datos desde otro. Más...
 
 Pds::FCLayer::~FCLayer ()
 

Inicializacion

bool Pds::FCLayer::Rand (double minval, double maxval)
 Carga los pesos con valores aleatorios uniformemente distribuidos desde minval hasta maxval. Más...
 
bool Pds::FCLayer::SetActFunc (double(*func)(double), double(*dfunc)(double))
 Retorna true si la funcion de activacion fue modificada o false si no. Más...
 

Get data

bool Pds::FCLayer::IsEmpty (void) const
 Retorna true si la capa esta vacia o false si no. Más...
 
unsigned int Pds::FCLayer::Ninputs (void) const
 Retorna el numero de elementos de entrada. Más...
 
unsigned int Pds::FCLayer::Noutputs (void) const
 Retorna el numero de elementos de salida. Más...
 
Pds::Shape Pds::FCLayer::GetInputShape (void) const
 Retorna el Shape de entrada de la estructura, si no importa el elemento es -1. Más...
 
Pds::Shape Pds::FCLayer::GetOutputShape (const Pds::Shape &In) const
 Retorna el Shape de salida de la estructura. Más...
 
std::string Pds::FCLayer::WToString (void) const
 Retorna como un string la matriz W. Más...
 
const Pds::Matrix & Pds::FCLayer::GetW (void) const
 Retorna la matriz W. Más...
 
Pds::Ra::FuncPointer Pds::FCLayer::GetActFunc (void) const
 Retorna la funcion de activación. Más...
 
Pds::Ra::FuncPointer Pds::FCLayer::GetDActFunc (void) const
 Retorna la derivada de la funcion de activación. Más...
 

Export

bool Pds::FCLayer::ExportXmlToStream (std::ofstream &myfile) const
 Salva los datos de la capa en un std::ofstream en formato Xml. Más...
 
std::string Pds::FCLayer::ExportXmlToString (void) const
 Salva los datos de la capa en un std::string en formato Xml. Más...
 
bool Pds::FCLayer::ImportXmlFromString (const std::string &str)
 Carga los datos de la capa. Más...
 
bool Pds::FCLayer::SaveInStream (std::ofstream &myfile) const
 Salva los datos de la capa. Más...
 
bool Pds::FCLayer::LoadFromStream (std::ifstream &ifs)
 Carga los datos de la capa. Más...
 

Evaluar

Pds::TensorBlock Pds::FCLayer::PredictTensor (const Pds::TensorBlock &In) const
 Evalua la capa de la CNN. Más...
 
Pds::SampleBlock Pds::FCLayer::Predict (const Pds::SampleBlock &In) const
 Evalua la capa de la CNN. Más...
 
Pds::Vector Pds::FCLayer::Predict (const Pds::Vector &In) const
 Evalua la capa de la CNN. Más...
 
bool Pds::FCLayer::Predict (const Pds::Vector &In, Pds::Vector &Out) const
 Evalua la capa de la CNN. Más...
 
bool Pds::FCLayer::Predict (const Pds::Vector &In, Pds::Vector &Out, Pds::Vector &Z) const
 Evalua la capa de la CNN. Más...
 

Backpropagation

static bool Pds::FCLayer::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 $\delta^{l}$ en la capa de la CNN a partir de $\delta^{l+1}$ y $z^{l}$. Más...
 
bool Pds::FCLayer::WUpdate (double alpham, const Pds::Matrix &Q_1, double lambda=0)
 Calcula y aplica la variación $\Delta W^{l-1}$ en la capa de la CNN a partir de $\delta^{l}$. Más...
 

Mostrando datos

void Pds::FCLayer::Print (std::string str="") const
 Muestra en pantalla el contenido de Pds::FCLayer, elementos separados por tabulador. Más...
 
void Pds::FCLayer::PrintStylized (std::string str="") const
 Muestra en pantalla el contenido de Pds::FCLayer, en el formato (Nli,Ncol). Más...
 
unsigned int Pds::FCLayer::SummaryLine (unsigned int width=12) const
 Imprime en pantalla una linea con: Más...
 
void Pds::FCLayer::MakeEmpty (void)
 Limpia el objeto. Más...
 
Pds::AbstractLayerPds::FCLayer::Clone (void)
 Retorna un puntero (generado con new) a una nuevo dirección de memoria con una copia del objeto actual. Más...
 

Descripción detallada

Metodos de la clase Pds::FCLayer, una única capa de una Full Connected Neural Network.

#include <Pds/FCLayer>

Informacion adicional puede ser encontrada en [1]

Documentación de las funciones

◆ FCLayer() [1/6]

Pds::FCLayer::FCLayer ( void  )

Crea un objeto de tipo Pds::FCLayer nulo con 0 entradas y 0 salidas. Sin función de activación. Matriz de pesos vazia.

◆ FCLayer() [2/6]

Pds::FCLayer::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. Los pesos so iniciados con una distribución normal com desvio igual a 1.

Diagrama de la capa
Parámetros
[in]NinNúmero de entradas.
[in]NoutNúmero de salidas.

◆ FCLayer() [3/6]

Pds::FCLayer::FCLayer ( unsigned int  Nin,
unsigned int  Nout,
double(*)(double)  func,
double(*)(double)  dfunc 
)

Crea un objeto de tipo Pds::FCLayer con Nin entradas y Nout salidas. Los pesos so iniciados con una distribución normal com desvio igual a 1.

Diagrama de la capa
Parámetros
[in]NinNúmero de entradas.
[in]NoutNúmero de salidas.
[in]funcFunción de activación.
[in]dfuncDerivada de la función de activación.

◆ FCLayer() [4/6]

Pds::FCLayer::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. Los pesos son iniciados desde la matriz W.

Diagrama de la capa
Parámetros
[in]WMatriz de pesos.

◆ FCLayer() [5/6]

Pds::FCLayer::FCLayer ( const Pds::Matrix &  W,
double(*)(double)  func,
double(*)(double)  dfunc 
)

Crea un objeto de tipo Pds::FCLayer con W.Ncol() entradas y W.Nlin() salidas. Usa la función sigmoide. Los pesos son iniciados desde la matriz W.

Diagrama de la capa
Parámetros
[in]WMatriz de pesos.
[in]funcFunción de activación.
[in]dfuncDerivada de la función de activación.

◆ FCLayer() [6/6]

Pds::FCLayer::FCLayer ( const Pds::FCLayer B)

Crea un objeto de tipo Pds::FCLayer copiando datos desde otro.

Parámetros
[in]BFCLayer a copiar.

◆ Rand()

bool Pds::FCLayer::Rand ( double  minval,
double  maxval 
)

Carga los pesos con valores aleatorios uniformemente distribuidos desde minval hasta maxval.

Parámetros
[in]minvalMínimo valor.
[in]maxvalMáximo valor.

◆ SetActFunc()

bool Pds::FCLayer::SetActFunc ( double(*)(double)  func,
double(*)(double)  dfunc 
)

Retorna true si la funcion de activacion fue modificada o false si no.

Parámetros
[in]funcFunción de activación.
[in]dfuncDerivada de la función de activación.
Devuelve
Retorna true si la funcion de activacion fue modificada o false si no.

◆ IsEmpty()

bool Pds::FCLayer::IsEmpty ( void  ) const
virtual

Retorna true si la capa esta vacia o false si no.

Devuelve
Retorna true si la capa esta vacia o false si no.

Implementa Pds::AbstractLayer.

◆ Ninputs()

unsigned int Pds::FCLayer::Ninputs ( void  ) const

Retorna el numero de elementos de entrada.

Devuelve
Retorna el numero de elementos de entrada.

◆ Noutputs()

unsigned int Pds::FCLayer::Noutputs ( void  ) const

Retorna el numero de elementos de salida.

Devuelve
Retorna el numero de elementos de salida.

◆ GetInputShape()

Pds::Shape Pds::FCLayer::GetInputShape ( void  ) const
virtual

Retorna el Shape de entrada de la estructura, si no importa el elemento es -1.

Devuelve
Retorna el Shape de entrada de la estructura

Implementa Pds::AbstractLayer.

◆ GetOutputShape()

Pds::Shape Pds::FCLayer::GetOutputShape ( const Pds::Shape &  In) const
virtual

Retorna el Shape de salida de la estructura.

Devuelve
Retorna el Shape de salida de la estructura

Implementa Pds::AbstractLayer.

◆ WToString()

std::string Pds::FCLayer::WToString ( void  ) const

Retorna como un string la matriz W.

Devuelve
Retorna como un string la matriz W.

◆ GetW()

const Pds::Matrix& Pds::FCLayer::GetW ( void  ) const

Retorna la matriz W.

Devuelve
Retorna la matriz W.
Ejemplos
example_fclayer.cpp.

◆ GetActFunc()

Pds::Ra::FuncPointer Pds::FCLayer::GetActFunc ( void  ) const

Retorna la funcion de activación.

Devuelve
Retorna la funcion de activación.

◆ GetDActFunc()

Pds::Ra::FuncPointer Pds::FCLayer::GetDActFunc ( void  ) const

Retorna la derivada de la funcion de activación.

Devuelve
Retorna la derivada de la funcion de activación.

◆ ExportXmlToStream()

bool Pds::FCLayer::ExportXmlToStream ( std::ofstream &  myfile) const
virtual

Salva los datos de la capa en un std::ofstream en formato Xml.

Por exemplo si guardamos un objeto de tipo Pds::FCLayer en el std::ofstream se escribirá algo similar a:

<FCLayer>
<Nin>2</Nin>
<Nout>3</Nout>
<ActFunc>3</ActFunc>
<DActFunc>4</DActFunc>
<Matrix>
<Nlin>3</Nlin>
<Ncol>3</Ncol>
<Array>
-1.045855489402 0.86048864346136 0.74207001785205
1.1751184865889 0.56014623106965 0.32903772889095
0.70173766075107 -1.905261897823 -0.63665096203108
</Array>
</Matrix>
</FCLayer>
Parámetros
[in]myfileStream de salida.
Devuelve
Retorna true si todo fue bien o false si no.

Implementa Pds::AbstractLayer.

Ejemplos
example_fclayer_export.cpp.

◆ ExportXmlToString()

std::string Pds::FCLayer::ExportXmlToString ( void  ) const
virtual

Salva los datos de la capa en un std::string en formato Xml.

Por exemplo si guardamos un objeto de tipo Pds::FCLayer en el std::ofstream se escribirá algo similar a:

<FCLayer>
<Nin>2</Nin>
<Nout>3</Nout>
<ActFunc>3</ActFunc>
<DActFunc>4</DActFunc>
<Matrix>
<Nlin>3</Nlin>
<Ncol>3</Ncol>
<Array>
-1.045855489402 0.86048864346136 0.74207001785205
1.1751184865889 0.56014623106965 0.32903772889095
0.70173766075107 -1.905261897823 -0.63665096203108
</Array>
</Matrix>
</FCLayer>
Devuelve
Retorna un std::string en formato Xml con los datos de la capa.

Implementa Pds::AbstractLayer.

Ejemplos
example_fclayer_export_xml.cpp.

◆ ImportXmlFromString()

bool Pds::FCLayer::ImportXmlFromString ( const std::string &  str)
virtual

Carga los datos de la capa.

Atención
Devido a que la dirección de memoria de la función de activación cambia en cada ejecución de um nuevo programa, en el archivo se guardan los Id de las funciones en el vector Pds::Nn::FuncVector.
Atención
si se detecta un Id=0 o un Id fuera de rango en Pds::Nn::FuncVector se escribirán las funciones Pds::Nn::DefaultActFunc y Pds::Nn::DefaultDActFunc, respectivamente. Si se usan Pds::Nn::DefaultActFunc o Pds::Nn::DefaultDActFunc y estos son NULL entonces se retorna false.
Parámetros
[in]strString donde se leerá la información.
Devuelve
Retorna true si todo fue bien o false en caso de error. La memoria es liberada antes de la importación de modo que en caso de error la capa IsEmpty()==true.

Implementa Pds::AbstractLayer.

Ejemplos
example_fclayer_export_xml.cpp.

◆ SaveInStream()

bool Pds::FCLayer::SaveInStream ( std::ofstream &  myfile) const

Salva los datos de la capa.

Parámetros
[in]myfileStream onde se escribira la informacion.
Devuelve
Retorna true si todo fue bien o false si no.
Ejemplos
example_fclayer_export.cpp.

◆ LoadFromStream()

bool Pds::FCLayer::LoadFromStream ( std::ifstream &  ifs)

Carga los datos de la capa.

Atención
Devido a que la dirección de memoria de la función de activación cambia en cada ejecución de um nuevo programa, en el archivo se guardan los Id de las funciones en el vector Pds::Nn::FuncVector.
Atención
si se detecta un Id=0 o un Id fuera de rango en Pds::Nn::FuncVector se escribirán las funciones Pds::Nn::DefaultActFunc y Pds::Nn::DefaultDActFunc, respectivamente. Si se usan Pds::Nn::DefaultActFunc o Pds::Nn::DefaultDActFunc y estos son NULL entonces se retorna false.
Parámetros
[in]ifsStream onde se leerá la información.
Devuelve
Retorna true si todo fue bien o false en caso de error. La memoria es liberada antes de la importación de modo que en caso de error la capa IsEmpty()==true.
Ejemplos
example_fclayer_export.cpp.

◆ PredictTensor()

Pds::TensorBlock Pds::FCLayer::PredictTensor ( const Pds::TensorBlock &  In) const
virtual

Evalua la capa de la CNN.

\[ \mathbf{Out}[n]_l \leftarrow ActFunc\left( \mathbf{W} \left[ \begin{matrix} 1\\ \mathbf{In}[n]_l \end{matrix} \right] \right) \]

Parámetros
[in]InVector de entrada.
Devuelve
Retorna un vector Out.

Implementa Pds::AbstractLayer.

Ejemplos
example_fclayer_predict.cpp.

◆ Predict() [1/4]

Pds::SampleBlock Pds::FCLayer::Predict ( const Pds::SampleBlock &  In) const

Evalua la capa de la CNN.

\[ \mathbf{Out}[n]_l \leftarrow ActFunc\left( \mathbf{W} \left[ \begin{matrix} 1\\ \mathbf{In}[n]_l \end{matrix} \right] \right) \]

Parámetros
[in]InVector de entrada.
Devuelve
Retorna un vector Out.
Ejemplos
example_fclayer.cpp y example_fclayer_predict.cpp.

◆ Predict() [2/4]

Pds::Vector Pds::FCLayer::Predict ( const Pds::Vector &  In) const

Evalua la capa de la CNN.

\[ \mathbf{Out} \leftarrow ActFunc\left( \mathbf{W} \left[ \begin{matrix} 1\\ \mathbf{In} \end{matrix} \right] \right) \]

Parámetros
[in]InVector de entrada.
Devuelve
Retorna un vector Out.

◆ Predict() [3/4]

bool Pds::FCLayer::Predict ( const Pds::Vector &  In,
Pds::Vector &  Out 
) const

Evalua la capa de la CNN.

\[ \mathbf{Out} \leftarrow ActFunc\left( \mathbf{W} \left[ \begin{matrix} 1\\ \mathbf{In} \end{matrix} \right] \right) \]

Parámetros
[in]InVector de entrada.
[out]OutVector de salida. Este vector debe tener el tamaño adecuado, caso contrario se retorna false.
Devuelve
Retorna true si todo fue bien o false si no.

◆ Predict() [4/4]

bool Pds::FCLayer::Predict ( const Pds::Vector &  In,
Pds::Vector &  Out,
Pds::Vector &  Z 
) const

Evalua la capa de la CNN.

\[ \mathbf{Z} \leftarrow \mathbf{W} \left[ \begin{matrix} 1\\ \mathbf{In} \end{matrix} \right] \]

\[ \mathbf{Out} \leftarrow ActFunc\left( \mathbf{Z} \right) \]

Parámetros
[in]InVector de entrada.
[out]OutVector de salida. Este vector debe tener el tamaño adecuado, caso contrario se retorna false.
[out]ZVector de salida antes de aplicar la funcion de activacion. Este vector debe tener el tamaño adecuado, caso contrario se retorna false.
Devuelve
Retorna true si todo fue bien o false si no.

◆ DeltaBackPropagation()

static bool Pds::FCLayer::DeltaBackPropagation ( const Pds::Matrix &  W,
const Pds::Vector &  delta_p1,
double(*)(double)  dfunc_m1,
const Pds::Vector &  z,
Pds::Vector &  delta 
)
static

Calcula el valor de $\delta^{l}$ en la capa de la CNN a partir de $\delta^{l+1}$ y $z^{l}$.

La función usa el valor interno de W $\equiv W^{l}$.

Diagrama de la capa

\[\delta^{l}=\left.\left[(W^{l})^T \delta^{l+1} \right]\right|_{lin=1}^{end}\odot dfunc_{l-1}(z^{l})\]

Parámetros
[in]WMatriz $\mathbf{W}^{l}$.
[in]delta_p1Vector $\delta^{l+1}$.
[in]dfunc_m1Funcion de activación de la capa $l-1$ que se aplica sobre $z^{l}$.
[in]zVector $z^{l}$ de la antrada no evaluada por la función de activación.
[out]deltaVector $\delta^{l}$.
Devuelve
Retorna true si todo fue bien o false si no.

◆ WUpdate()

bool Pds::FCLayer::WUpdate ( double  alpham,
const Pds::Matrix &  Q_1,
double  lambda = 0 
)

Calcula y aplica la variación $\Delta W^{l-1}$ en la capa de la CNN a partir de $\delta^{l}$.

Diagrama de la capa

\[Q^{l-1} = \sum^m \delta^{l} (\hat{a}^{l-1})^T\]

\[ A= \left( \begin{matrix} 0 & 1 & ... & 1 \\ 0 & 1 & ... & 1 \\ \vdots & \vdots & ... & \vdots \\ 0 & 1 & ... & 1 \\ \end{matrix} \right) \]

$m$ amostras de treinamento.

\[ W^{l-1} := W^{l-1} - \alpha_m (Q^{l-1}+\lambda A \odot W^{l-1}) \]

Parámetros
[in]alphamFactor $\alpha_m=\alpha/m$ de aprendisaje.
[in]Q_1Actualizacion de peso $Q^{l-1}$.
[in]lambdaFactor $\lambda$ de regularizacion.
Devuelve
Retorna true si todo fue bien o false si no.

◆ Print()

void Pds::FCLayer::Print ( std::string  str = "") const

Muestra en pantalla el contenido de Pds::FCLayer, elementos separados por tabulador.

Parámetros
[in]strTexto a mostrar antes de imprimir el contenido.

◆ PrintStylized()

void Pds::FCLayer::PrintStylized ( std::string  str = "") const

Muestra en pantalla el contenido de Pds::FCLayer, en el formato (Nli,Ncol).

Parámetros
[in]strTexto a mostrar antes de imprimir el contenido.
Ejemplos
example_fclayer.cpp, example_fclayer_create.cpp, example_fclayer_export.cpp, example_fclayer_export_xml.cpp y example_fclayer_predict.cpp.

◆ SummaryLine()

unsigned int Pds::FCLayer::SummaryLine ( unsigned int  width = 12) const

Imprime en pantalla una linea con:

Name Input_shape Output_shape Parametros Activation_function

Parámetros
[in]widthParámetro ancho de referencia para cada elemento.
Devuelve
El número de parametros en la capa.

◆ MakeEmpty()

void Pds::FCLayer::MakeEmpty ( void  )
virtual

Limpia el objeto.

Implementa Pds::AbstractLayer.

◆ Clone()

Pds::AbstractLayer* Pds::FCLayer::Clone ( void  )
inlinevirtual

Retorna un puntero (generado con new) a una nuevo dirección de memoria con una copia del objeto actual.

Implementa Pds::AbstractLayer.

Ejemplos
example_customcnn_create.cpp.

Definición en la línea 583 del archivo FCLayer.hpp.

584  {
585  return new Pds::FCLayer(*this);
586  }
const std::string FCLayer
Tag de un objeto de tipo Pds::FCLayer.
Definition: NnDefines.hpp:149

Hace referencia a Pds::Nn::Tag::FCLayer.

◆ ~FCLayer()

Pds::FCLayer::~FCLayer ( )

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed