Exemplo n.º 1
0
/* compute the backward sum of the
 * 2nd-derivative weighted by the squared weights 
 */
static void 
updN_sqbacksum(neurone *n)
{
  if (n->FSaval != NIL) {
#ifndef NONEURTYPE
    synapse *s = n->FSaval;
    n->Nsqbacksum = Fzero;
    while (s)
      {
        neurtype *taval = s->Naval->type;
        if (taval && taval->updN_sqbacksum_term)
          s = (*taval->updN_sqbacksum_term)(n, s);
        else {
          flt sum, prod;
          Fclr(sum);
          for (; s && s->Naval->type==taval; s=s->NSamont ) {
            prod = Fmul( Fmul(s->Sval,s->Sval), s->Naval->Nggrad );
            sum  = Fadd( sum,prod );
          }
          n->Nsqbacksum = Fadd(n->Nsqbacksum, sum);
        }
      }
#else
    synapse *s;
    flt sum , prod;
    Fclr(sum);
    for ( s=n->FSaval; s!=NIL; s=s->NSamont ) {
      prod = Fmul( Fmul(s->Sval,s->Sval), s->Naval->Nggrad );
      sum  = Fadd( sum,prod );
    }
    n->Nsqbacksum=sum;
#endif
  }
}
Exemplo n.º 2
0
static void 
updN_sum(neurone *n)
{
#ifndef NONEURTYPE
  if (n->type && n->type->updN_sum) 
    {
      (*n->type->updN_sum)(n);
    }
  else
#endif
    {
      synapse *s;
      flt sum,prod;
      Fclr(sum);
      for ( s=n->FSamont; s!=NIL; s=s->NSaval ) 
	{
	  prod = Fmul( s->Sval, s->Namont->Nval );
	  sum  = Fadd( sum,prod );
	}
      if (theta != Flt0) 
	{
	  prod=Fmul(Fgauss(),theta);
	  sum=Fadd( sum,prod );
	}
      n->Nsum=sum;
    }
}
Exemplo n.º 3
0
static flt 
mean_sq_input(neurone *n)
{
  synapse *s;
  flt sum, nbre;
  
  Fclr(sum);
  Fclr(nbre);
  for ( s=n->FSamont; s!=NIL; s=s->NSaval ) {
    flt x = s->Namont->Nval;
    sum  = Fadd( sum, Fmul(x,x) );
    nbre=Fadd(nbre,Flt1);
  };
  if (nbre>Flt0) 
    return Fdiv(sum,nbre);
  else
    return Flt0;
}
Exemplo n.º 4
0
Arquivo: interf.c Projeto: barak/lush
/* returns the length of the weight-change of a cell */
static flt 
delta_sqr_norm(neurone *n, int *fan)
{
  synapse *s;
  flt sum;
  Fclr(sum);
  for ( s=n->FSamont; s!=NIL; s=s->NSaval ) {
    (*fan)++;
    sum = Fadd(sum, Fmul(s->Sdelta, s->Sdelta));
  }
  return sum;
}
Exemplo n.º 5
0
Arquivo: iac.c Projeto: barak/lush
static void 
updN_inhibition(neurone *n)
{
  synapse *s;
  flt sum,prod;
  
  Fclr(sum);
  for (s=n->FSamont; s!=NIL; s=s->NSaval)
    if ( Fsgn(s->Sval) < 0 ) {
      prod = Fmul( s->Sval, s->Namont->Nval );
      sum  = Fadd( sum,prod );
    };
  n->Nspare2=sum;
}
Exemplo n.º 6
0
Arquivo: interf.c Projeto: barak/lush
/* returns the average of the epsilons of the pre-synaptic weights  */
static flt 
averagesyneps(neurone *n)
{
  synapse *s;
  flt sum;
  int num;
  Fclr(sum); num=0;
  for ( s=n->FSamont; s!=NIL; s=s->NSaval ) {
    num++;
    sum = Fadd(sum, s->Sepsilon);
  }
  if (num>0) return Fdiv(sum,InttoF(num));
  else return Flt0;
}
Exemplo n.º 7
0
/* functions to compute and 
 * use the inverse diag hessian
 * in iterative and/or batch mode 
 */
void 
clear_hess(weight *nptr)
{
  int iend;
  weight *wei;
  int i;

  if (nptr==NULL) {
    wei=weightbase;
    iend=weightnombre;
  } else {
    wei=nptr;
    iend=1; 
  }
  for ( i=0; i<iend; i++,wei++ ) { 
    Fclr(wei->Whess); 
  }
}
Exemplo n.º 8
0
static void 
updN_deltastate(neurone *n)
{
#ifndef NONEURTYPE
  if (n->type && n->type->updN_deltastate)
    {
      (*n->type->updN_deltastate)(n);
    }
  else
#endif
    {
      synapse *s;
      flt sum,prod;
      Fclr(sum);
      for ( s=n->FSamont; s!=NIL; s=s->NSaval ) {
	prod = Fmul( s->Sval, s->Namont->Ngrad );
	sum  = Fadd( sum, prod );
	prod = Fmul( s->Sdelta, s->Namont->Nval );
	sum  = Fadd( sum, prod );
      }
      n->Ngrad = Fmul(sum, CALLDNLF(n->Nsum) );
    }
}