home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Education
/
collectionofeducationcarat1997.iso
/
COMPUSCI
/
NNUTL101.ZIP
/
NNWHERE
/
NNLOADIN.C
< prev
next >
Wrap
Text File
|
1993-07-12
|
3KB
|
77 lines
/*-----------------------------------------------------------------------*
* Greg Stevens 6/24/93*
* NNLOADIN.C *
* [file 5 in a series of 6] *
* *
* This file loads the inputs into the net and feeds the values forward. *
* *
*-----------------------------------------------------------------------*/
#include "nndisply.c" /* links to rest of nn*.c utils */
#include <math.h> /* for the exp() function */
/* Function Prototypes */
NNETtype UpDateInputAct( PATTERNtype ptn, int p, NNETtype oldn );
NNETtype UpDateLayerAct( NNETtype oldn, int L );
/* Function Definitions */
NNETtype UpDateInputAct( PATTERNtype ptn, int P, NNETtype oldn )
{
NNETtype n; /* for output net */
int u; /* unit counter (in each pattern)*/
n = oldn; /* transfers current weight */
/* values in the net to be out- */
/* putted. */
for (u=0;(u<INPUT_LAYER_SIZE);++u) /*for each node in input layer...*/
{
n.unit[0][u].state = ptn.p[P][u]; /* loads each element of the */
/* input pattern into the input */
/* layer's activation state */
}
return( n ); /* return net w/ new input layer */
}
NNETtype UpDateLayerAct( NNETtype oldn, int L )
{
NNETtype n; /* to hold the updated network */
int u, v; /* unit looping counters */
float act; /* for holding activation states */
n = oldn;
if (L<1)
{
printf( "YOU FUCKED UP!" );
return(n); /* if input layer, return ERROR */
}
if (L>=NUMLAYERS)
{
printf( "YOU FUCKED UP!" );
return(n); /* if not a layer, return ERROR */
}
for (u=0; (u<NUMNODES[L]); ++u ) /* for each node in the layer... */
{
act = n.unit[L][u].thresh; /* set act to neg. thresh */
for (v=0; (v<NUMNODES[L-1]); ++v) /* then sum weighted inputs*/
{
act += n.unit[L-1][v].state * n.unit[L][u].weights[v];
}
if (n.unit[L][u].actfn==0) /* if its linear... */
{
n.unit[L][u].state = act;
}
else if (n.unit[L][u].actfn==1) /* if its logistic... */
{
n.unit[L][u].state = 1.0 / (1.0 + exp( 0.0 - act ));
}
}
return( n );
}