Changeset 40320
- Timestamp:
- Jan 23, 2018, 1:24:10 PM (8 years ago)
- Location:
- trunk/Ohana/src/opihi
- Files:
-
- 5 edited
-
cmd.data/nnet.c (modified) (1 diff)
-
cmd.data/nnet_commands.c (modified) (7 diffs)
-
cmd.data/test/nnet.sh (modified) (1 diff)
-
include/data.h (modified) (1 diff)
-
lib.data/nnet.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.data/nnet.c
r40319 r40320 4 4 {1, "list", nnet_list, "list nnets"}, 5 5 {1, "delete", nnet_delete, "delete a nnet"}, 6 {1, "show", nnet_show, "display nnet values"},6 // {1, "show", nnet_show, "display nnet values"}, 7 7 {1, "create", nnet_create, "create a nnet"}, 8 8 {1, "set", nnet_set, "set nnet node values"}, -
trunk/Ohana/src/opihi/cmd.data/nnet_commands.c
r40319 r40320 14 14 int nnet_delete (int argc, char **argv) { 15 15 16 # if (0)17 16 int status; 18 17 Nnet *nnet; … … 31 30 status = DeleteNnet (nnet); 32 31 if (!status) abort (); 33 # endif34 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 # endif56 32 57 33 return TRUE; … … 60 36 int nnet_create (int argc, char **argv) { 61 37 62 if (argc < 5) {38 if (argc < 4) { 63 39 gprint (GP_ERR, "USAGE: nnet create (nnet) (Ninput) [Nnodes] [Nnodes] ... (Noutput)\n"); 64 40 return FALSE; … … 86 62 Vector *vector; 87 63 88 if (argc < 5) {64 if (argc < 4) { 89 65 gprint (GP_ERR, "USAGE: nnet set (nnet) [weights] [biases] ... [weights] [biases] : set nnet weights (images) and biases (vectors)\n"); 90 66 return FALSE; … … 98 74 99 75 // compare argc and nnet[0].Nlayer 100 if (argc - 2 != nnet[0].Nlayer* 2) {76 if (argc - 2 != (nnet[0].Nlayer - 1) * 2) { 101 77 gprint (GP_ERR, "ERROR: invalid number of arguments\n"); 102 78 gprint (GP_ERR, "USAGE: nnet set (nnet) [weights] [biases] ... [weights] [biases] : set nnet weights (images) and biases (vectors)\n"); … … 164 140 Vector *vector; 165 141 166 if (argc < 5) {142 if (argc < 4) { 167 143 gprint (GP_ERR, "USAGE: nnet get (nnet) [weights] [biases] ... [weights] [biases] : get nnet weights (images) and biases (vectors)\n"); 168 144 return FALSE; … … 176 152 177 153 // compare argc and nnet[0].Nlayer 178 if (argc - 2 != nnet[0].Nlayer* 2) {154 if (argc - 2 != (nnet[0].Nlayer - 1) * 2) { 179 155 gprint (GP_ERR, "ERROR: invalid number of arguments\n"); 180 156 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 4 4 nnet create t0 5 10 15 3 5 5 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 6 36 end 37 38 macro 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 74 end 75 76 macro 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 122 end 123 -
trunk/Ohana/src/opihi/include/data.h
r40319 r40320 253 253 // in lib.data/nnet.c: 254 254 void InitNnets (); 255 void InitNnetData (Nnet *nnet, char *name );255 void InitNnetData (Nnet *nnet, char *name, int Nlayer); 256 256 257 257 void FreeNnets (); -
trunk/Ohana/src/opihi/lib.data/nnet.c
r40319 r40320 26 26 // InitNnetData requires nnet to unassigned or initialized 27 27 // if you have an existing Nnet, call FreeNnetData first 28 void InitNnetData (Nnet *nnet, char *name ) {28 void InitNnetData (Nnet *nnet, char *name, int Nlayer) { 29 29 30 30 nnet[0].name = strcreate (name); … … 43 43 nnet[0]. Nabla_w = NULL; 44 44 nnet[0].dNabla_w = NULL; 45 46 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); 45 59 } 46 60 … … 114 128 if (nnet != NULL) { 115 129 FreeNnetData (nnet); 116 InitNnetData (nnet, name );130 InitNnetData (nnet, name, Nlayer); 117 131 return (nnet); 118 132 } … … 122 136 CHECK_REALLOCATE (nnets, Nnet *, NNNETS, Nnnets, 16); 123 137 ALLOCATE (nnet, Nnet, 1); 124 InitNnetData (nnet, name); 125 126 nnet[0].Nlayer = Nlayer; 127 ALLOCATE (nnet[0].Nnodes, int, Nlayer); 128 ALLOCATE (nnet[0].weight, float *, Nlayer); 129 ALLOCATE (nnet[0].biases, float *, Nlayer); 130 ALLOCATE (nnet[0].svalue, float *, Nlayer); 131 ALLOCATE (nnet[0].zvalue, float *, Nlayer); 132 ALLOCATE (nnet[0].sprime, float *, Nlayer); 133 ALLOCATE (nnet[0].delta , float *, Nlayer); 134 135 ALLOCATE (nnet[0]. Nabla_b, float *, Nlayer); 136 ALLOCATE (nnet[0].dNabla_b, float *, Nlayer); 137 ALLOCATE (nnet[0]. Nabla_w, float *, Nlayer); 138 ALLOCATE (nnet[0].dNabla_w, float *, Nlayer); 138 InitNnetData (nnet, name, Nlayer); 139 139 140 140 // save this nnet in the static array of nnets
Note:
See TracChangeset
for help on using the changeset viewer.
