Home | Develop | Download | Contact
pdsnvector.h
1 /*
2  * pdsnvector.h
3  *
4  * Copyright 2011 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 __PDSNVECTOR_H__
33 #define __PDSNVECTOR_H__
34 
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38 
39 #include <stdio.h>
40 #include <stdlib.h>
41 #include <pds/pdsnnglobal.h>
42 #include <pds/pdsra.h>
43 #include <pds/pdsrv.h>
44 #include <pds/pdssn.h>
45 #include <pds/pdsnivector.h>
46 
47 
48 #ifndef TRUE
49  #define TRUE 1
50 #endif
51 
52 #ifndef FALSE
53  #define FALSE 0
54 #endif
55 
56 
74 typedef struct
75 {
77  PdsNeuron **V;
80 }PdsNVector;
81 
82 
83 
100 
102 
117 int pds_nvector_init_weight_uniform(PdsNVector *NVector,PdsUniform *RV);
118 
128 int pds_nvector_init_weight_rand(PdsNVector *NVector,PdsSnReal min, PdsSnReal max);
129 
138 int pds_nvector_init_u_uniform(PdsNVector *NVector,PdsUniform *RV);
139 
149 int pds_nvector_init_u_rand(PdsNVector *NVector,PdsSnReal min, PdsSnReal max);
150 
152 
153 
154 
176 int pds_nvector_connect_input(PdsNVector *NVector,PdsNVector *NVectorBefore);
177 
178 
192 int pds_nvector_connect_input_with_nivector(PdsNVector *NVector,PdsNIVector *X);
193 
194 
196 
212 
213 
215 
230 
231 
233 
248 int pds_nvector_iterate(PdsNVector *NVector);
249 
250 
251 
253 
269 int pds_nvector_get_output(const PdsNVector *NVector,PdsVector *Y);
270 
271 
273 
292 int pds_nvector_evaluate_diff_error(PdsNVector *NVector,const PdsVector * R);
293 
294 
303 int pds_nvector_get_rms_error(const PdsNVector *NVector,PdsNnReal *RmsError);
304 
305 
314 int pds_nvector_get_soft_vote(const PdsNVector *NVector,PdsNnReal *Vote);
315 
316 
331 
332 
333 
335 
355 
356 
357 
359 
375 int pds_nvector_fprintf(const PdsNVector *NVector, FILE *fd);
376 
377 
386 int pds_nvector_fscanf(PdsNVector *NVector, FILE *fd);
387 
388 
396 int pds_nvector_fwrite(const PdsNVector *NVector, FILE *fd);
397 
398 
406 int pds_nvector_fread(PdsNVector *NVector, FILE *fd);
407 
408 
410 
423 void pds_nvector_free(PdsNVector *NVector);
424 
425 
433 void pds_nvector_destroy(PdsNVector **NVector);
434 
435 
437 
442 #ifdef __cplusplus
443 }
444 #endif
445 
446 #endif
447 
448 
int pds_nvector_init_u_rand(PdsNVector *NVector, PdsSnReal min, PdsSnReal max)
Coloca de forma aleatoria valores entre min y max, en el valor de U de todas las Neuronas, es usada la funcion rand.
int pds_nvector_fscanf(PdsNVector *NVector, FILE *fd)
Lee de un archivo de texto los pesos y los valores . Ocupando una linea cada uno, y separando los elementos por un TAB.
int pds_nvector_init_u_uniform(PdsNVector *NVector, PdsUniform *RV)
Coloca de forma aleatoria siguiendo una distribucion uniforme, el valor de U de las Neuronas...
int pds_nvector_backpropagate_error(PdsNVector *NVector, PdsNnReal Alpha)
Retro propaga el error de las neuronas del vector NVector el resultado es cargado en la salida Y[1] d...
int pds_nvector_evaluate_theta(PdsNVector *NVector)
Evalua la variable theta de la Neurona Neuron. .
int pds_nvector_get_rms_error(const PdsNVector *NVector, PdsNnReal *RmsError)
Evalúa el error cuadrático medio de todos los errores Y[1] de las. neuronas del vector.
int pds_nvector_fprintf(const PdsNVector *NVector, FILE *fd)
Guarda en un archivo de texto los pesos y los valores . Ocupando una linea cada uno, y separando los elementos por un TAB.
int pds_nvector_init_weight_uniform(PdsNVector *NVector, PdsUniform *RV)
Inicia aleatoriamente siguiendo una distribución uniforme, los pesos de todas las neuronas del vector...
void pds_nvector_destroy(PdsNVector **NVector)
Libera un vector de neuronas de tipo puntero PdsNVector, y limpia el puntero con NULL.
PdsNeuron ** V
Definition: pdsnvector.h:77
PdsNVector * pds_nvector_new(PdsNnNatural Nel, PdsNnNatural Nd)
Crea un vector de neuronas de tipo PdsNVector e inicia con cero todos los pesos, U=1.0.
int pds_nvector_fwrite(const PdsNVector *NVector, FILE *fd)
Guarda en un archivo de texto binario los pesos y los valores .
unsigned int PdsNnNatural
Definition: pdsnnglobal.h:62
int pds_nvector_connect_input(PdsNVector *NVector, PdsNVector *NVectorBefore)
Conecta el valor de salida Y de las Neuronas del vector NVectorBefore con las entradas X[id] de las n...
int pds_nvector_update_u_and_weight(PdsNVector *NVector, PdsNnReal Alpha)
Actualiza los pesos W[k]j de las neuronas. "ej" es el error de la salida de la j-essima neurona...
int pds_nvector_evaluate_func(PdsNVector *NVector)
Evalua la funcion de activación de las Neuronas de NVector. .
int pds_nvector_connect_input_with_nivector(PdsNVector *NVector, PdsNIVector *X)
Conecta los elementos del vector X de neuronas de entradas, con las entradas X[id] de las neuronas de...
float PdsNnReal
Definition: pdsnnglobal.h:52
int pds_nvector_get_soft_vote(const PdsNVector *NVector, PdsNnReal *Vote)
Evalúa una votación de todos los valores de salida Y[0] de las neuronas, se realiza una suma simple d...
La estructura tipo PdsNVector . Esta estructura genera un arreglo de neuronas. Para usar incluir pds/...
Definition: pdsnvector.h:74
PdsNnNatural Nel
Definition: pdsnvector.h:79
int pds_nvector_get_output(const PdsNVector *NVector, PdsVector *Y)
Devuelve el valor de la salida Y de las Neuronas.
int pds_nvector_init_weight_rand(PdsNVector *NVector, PdsSnReal min, PdsSnReal max)
Inicia aleatoriamente siguiendo una distribución uniforme entre min e max en todas las neuronas del v...
int pds_nvector_iterate(PdsNVector *NVector)
Itera las neuronas del vector NVector. .
int pds_nvector_fread(PdsNVector *NVector, FILE *fd)
Lee de un archivo de texto binario los pesos y los valores .
int pds_nvector_evaluate_diff_error(PdsNVector *NVector, const PdsVector *R)
Compara la salida de las neuronas del vector NVector con el vector de referencia R, el resultado es cargado en la salida Y[1] de cada neurona del vector NVector en NVector->V[i]->Y[1].
void pds_nvector_free(PdsNVector *NVector)
Libera un vector de neuronas de tipo puntero PdsNVector.

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed