IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 16, 2018, 4:06:05 PM (8 years ago)
Author:
eugene
Message:

fix up the nnet code to match behavior of the python version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/lib.data/nnet.c

    r40325 r40371  
    4545
    4646  nnet[0].Nlayer = Nlayer;
    47   ALLOCATE (nnet[0].Nnodes, int, Nlayer);
    48   ALLOCATE (nnet[0].weight, float *, Nlayer);
    49   ALLOCATE (nnet[0].biases, float *, Nlayer);
    50   ALLOCATE (nnet[0].svalue, float *, Nlayer);
    51   ALLOCATE (nnet[0].zvalue, float *, Nlayer);
    52   ALLOCATE (nnet[0].sprime, float *, Nlayer);
    53   ALLOCATE (nnet[0].delta , float *, Nlayer);
    54 
    55   ALLOCATE (nnet[0]. Nabla_b, float *, Nlayer);
    56   ALLOCATE (nnet[0].dNabla_b, float *, Nlayer);
    57   ALLOCATE (nnet[0]. Nabla_w, float *, Nlayer);
    58   ALLOCATE (nnet[0].dNabla_w, float *, Nlayer);
     47  ALLOCATE_ZERO (nnet[0].Nnodes, int, Nlayer);
     48  ALLOCATE_ZERO (nnet[0].weight, float *, Nlayer);
     49  ALLOCATE_ZERO (nnet[0].biases, float *, Nlayer);
     50  ALLOCATE_ZERO (nnet[0].svalue, float *, Nlayer);
     51  ALLOCATE_ZERO (nnet[0].zvalue, float *, Nlayer);
     52  ALLOCATE_ZERO (nnet[0].sprime, float *, Nlayer);
     53  ALLOCATE_ZERO (nnet[0].delta , float *, Nlayer);
     54
     55  ALLOCATE_ZERO (nnet[0]. Nabla_b, float *, Nlayer);
     56  ALLOCATE_ZERO (nnet[0].dNabla_b, float *, Nlayer);
     57  ALLOCATE_ZERO (nnet[0]. Nabla_w, float *, Nlayer);
     58  ALLOCATE_ZERO (nnet[0].dNabla_w, float *, Nlayer);
    5959}
    6060
     
    6363    int i;
    6464
    65     free (nnet[0].name);
     65    FREE (nnet[0].name);
    6666    for (i = 0; i < nnet[0].Nlayer; i++) {
    67       free (nnet[0].weight[i]);
    68       free (nnet[0].biases[i]);
    69       free (nnet[0].svalue[i]);
    70       free (nnet[0].zvalue[i]);
    71       free (nnet[0].sprime[i]);
    72       free (nnet[0].delta [i]);
    73 
    74       free (nnet[0]. Nabla_b[i]);
    75       free (nnet[0].dNabla_b[i]);
    76       free (nnet[0]. Nabla_w[i]);
    77       free (nnet[0].dNabla_w[i]);
    78     }
    79     free (nnet[0].Nnodes);
    80     free (nnet[0].weight);
    81     free (nnet[0].biases);
    82     free (nnet[0].svalue);
    83     free (nnet[0].zvalue);
    84     free (nnet[0].sprime);
    85     free (nnet[0].delta );
    86 
    87     free (nnet[0]. Nabla_b);
    88     free (nnet[0].dNabla_b);
    89     free (nnet[0]. Nabla_w);
    90     free (nnet[0].dNabla_w);
     67      FREE (nnet[0].weight[i]);
     68      FREE (nnet[0].biases[i]);
     69      FREE (nnet[0].svalue[i]);
     70      FREE (nnet[0].zvalue[i]);
     71      FREE (nnet[0].sprime[i]);
     72      FREE (nnet[0].delta [i]);
     73
     74      FREE (nnet[0]. Nabla_b[i]);
     75      FREE (nnet[0].dNabla_b[i]);
     76      FREE (nnet[0]. Nabla_w[i]);
     77      FREE (nnet[0].dNabla_w[i]);
     78    }
     79    FREE (nnet[0].Nnodes);
     80    FREE (nnet[0].weight);
     81    FREE (nnet[0].biases);
     82    FREE (nnet[0].svalue);
     83    FREE (nnet[0].zvalue);
     84    FREE (nnet[0].sprime);
     85    FREE (nnet[0].delta );
     86
     87    FREE (nnet[0]. Nabla_b);
     88    FREE (nnet[0].dNabla_b);
     89    FREE (nnet[0]. Nabla_w);
     90    FREE (nnet[0].dNabla_w);
    9191}
    9292
     
    236236}
    237237
     238void PrintNnet (Nnet *nnet) {
     239
     240  for (int L = 1; L < nnet[0].Nlayer; L++) {
     241    gprint (GP_ERR, " ----- Layer %d -----\n", L);
     242    for (int j = 0; j < nnet[0].Nnodes[L]; j++) {
     243      for (int i = 0; i < nnet[0].Nnodes[L-1]; i++) {
     244        int k = j * nnet[0].Nnodes[L-1] + i;
     245        myAssert (k < nnet[0].Nnodes[L-1]*nnet[0].Nnodes[L], "overflow");
     246        gprint (GP_ERR, "%7.4f ", nnet[0].weight[L][k]);
     247      }
     248      gprint (GP_ERR, " : %7.4f\n", nnet[0].biases[L][j]);
     249    }
     250  }
     251  return;
     252}
     253
Note: See TracChangeset for help on using the changeset viewer.