IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 23, 2018, 1:24:10 PM (8 years ago)
Author:
eugene
Message:

fix segfault for nnet

Location:
trunk/Ohana/src/opihi/cmd.data
Files:
3 edited

Legend:

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

    r40319 r40320  
    44  {1, "list",     nnet_list,     "list nnets"},
    55  {1, "delete",   nnet_delete,   "delete a nnet"},
    6   {1, "show",     nnet_show,     "display nnet values"},
     6  // {1, "show",     nnet_show,     "display nnet values"},
    77  {1, "create",   nnet_create,   "create a nnet"},
    88  {1, "set",      nnet_set,      "set nnet node values"},
  • trunk/Ohana/src/opihi/cmd.data/nnet_commands.c

    r40319 r40320  
    1414int nnet_delete (int argc, char **argv) {
    1515
    16 # if (0)
    1716  int status;
    1817  Nnet *nnet;
     
    3130  status = DeleteNnet (nnet);
    3231  if (!status) abort ();
    33 # endif
    34 
    35   return TRUE;
    36 }
    37 
    38 int nnet_show (int argc, char **argv) {
    39 
    40 # if (0)
    41   Nnet *nnet;
    42 
    43   if (argc != 2) {
    44     gprint (GP_ERR, "USAGE: nnet listnnet (nnet)\n");
    45     return FALSE;
    46   }
    47 
    48   nnet = FindNnet (argv[1]);
    49   if (nnet == NULL) {
    50     gprint (GP_ERR, "nnet %s not found\n", argv[1]);
    51     return FALSE;
    52   }
    53 
    54   ListPages (nnet);
    55 # endif
    5632
    5733  return TRUE;
     
    6036int nnet_create (int argc, char **argv) {
    6137
    62   if (argc < 5) {
     38  if (argc < 4) {
    6339    gprint (GP_ERR, "USAGE: nnet create (nnet) (Ninput) [Nnodes] [Nnodes] ... (Noutput)\n");
    6440    return FALSE;
     
    8662  Vector *vector;
    8763
    88   if (argc < 5) {
     64  if (argc < 4) {
    8965    gprint (GP_ERR, "USAGE: nnet set (nnet) [weights] [biases] ... [weights] [biases] : set nnet weights (images) and biases (vectors)\n");
    9066    return FALSE;
     
    9874
    9975  // compare argc and nnet[0].Nlayer
    100   if (argc - 2 != nnet[0].Nlayer * 2) {
     76  if (argc - 2 != (nnet[0].Nlayer - 1) * 2) {
    10177    gprint (GP_ERR, "ERROR: invalid number of arguments\n");
    10278    gprint (GP_ERR, "USAGE: nnet set (nnet) [weights] [biases] ... [weights] [biases] : set nnet weights (images) and biases (vectors)\n");
     
    164140  Vector *vector;
    165141
    166   if (argc < 5) {
     142  if (argc < 4) {
    167143    gprint (GP_ERR, "USAGE: nnet get (nnet) [weights] [biases] ... [weights] [biases] : get nnet weights (images) and biases (vectors)\n");
    168144    return FALSE;
     
    176152
    177153  // compare argc and nnet[0].Nlayer
    178   if (argc - 2 != nnet[0].Nlayer * 2) {
     154  if (argc - 2 != (nnet[0].Nlayer - 1) * 2) {
    179155    gprint (GP_ERR, "ERROR: invalid number of arguments\n");
    180156    gprint (GP_ERR, "USAGE: nnet set (nnet) [weights] [biases] ... [weights] [biases] : set nnet weights (images) and biases (vectors)\n");
  • trunk/Ohana/src/opihi/cmd.data/test/nnet.sh

    r40319 r40320  
    44  nnet create t0 5 10 15 3
    55  nnet list
     6
     7  nnet create t1 5 8
     8  nnet list
     9
     10  # vlist v0 1 2 3 4 5
     11  vlist v1 1 2 3 4 5 6 7 8
     12
     13  mcreate m1 5 8
     14 
     15  # generate a weight vector of length v1[]
     16  vlist my 9 8 7 6 5 4 3 2
     17
     18  for i 0 5
     19    mset m1 my -y $i
     20    set my = my + $i
     21  end
     22 
     23  # set weights and biases
     24  nnet set t1 m1 v1
     25
     26  # get weights and biases
     27  nnet get t1 M1 V1
     28
     29  # compare
     30  set dv = v1 - V1
     31  vstat dv
     32
     33  set dm = m1 - M1
     34  stat dm
     35 
    636end
     37
     38macro test2
     39
     40  nnet create t1 2 2
     41  nnet list
     42
     43  # output = sigmoid (sum(weight[i][j] * input[i]) + bias[j])
     44
     45  # biases of
     46  vlist v1 0.8 0.2
     47
     48  mcreate m1 2 2
     49  m1[0][0] =  0.5
     50  m1[1][0] =  0.1
     51  m1[0][1] = -0.2
     52  m1[1][1] =  0.8
     53
     54  # set weights and biases
     55  nnet set t1 m1 v1
     56
     57  vlist vin0 1 2
     58  vlist vin1 2 1
     59
     60  # get weights and biases
     61  nnet apply t1 vin0 vin1 vout0 vout1
     62 
     63  vlist z0 {m1[0][0]*vin0[0] + m1[1][0]*vin1[0] + v1[0]} {m1[0][0]*vin0[1] + m1[1][0]*vin1[1] + v1[0]}
     64  vlist z1 {m1[0][1]*vin0[0] + m1[1][1]*vin1[0] + v1[1]} {m1[0][1]*vin0[1] + m1[1][1]*vin1[1] + v1[1]}
     65  set t0 = 1 / (1 + exp(-1*z0))
     66  set t1 = 1 / (1 + exp(-1*z1))
     67
     68  # compare
     69  set dt0 = t0 - vout0
     70  vstat dt0
     71
     72  set dt1 = t1 - vout1
     73  vstat dt1
     74end
     75
     76macro test3
     77
     78  memory all
     79
     80  nnet create t0 5 10 15 3
     81  nnet list
     82
     83  nnet create t1 5 8
     84  nnet list
     85
     86  # vlist v0 1 2 3 4 5
     87  vlist v1 1 2 3 4 5 6 7 8
     88
     89  mcreate m1 5 8
     90 
     91  # generate a weight vector of length v1[]
     92  vlist my 9 8 7 6 5 4 3 2
     93
     94  for i 0 5
     95    mset m1 my -y $i
     96    set my = my + $i
     97  end
     98 
     99  # set weights and biases
     100  nnet set t1 m1 v1
     101
     102  # get weights and biases
     103  nnet get t1 M1 V1
     104
     105  # compare
     106  set dv = v1 - V1
     107  vstat dv
     108
     109  set dm = m1 - M1
     110  stat dm
     111 
     112  nnet delete t0
     113  nnet delete t1
     114
     115  delete m1 M1 dm
     116  delete v1 V1 dv my
     117
     118  vectors
     119  buffers
     120
     121  memory all
     122end
     123
Note: See TracChangeset for help on using the changeset viewer.