Advertisement
Guest User

Untitled

a guest
Jul 4th, 2015
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.46 KB | None | 0 0
  1. [root@cobalt examples]# cd cancer_classification/
  2. [root@cobalt cancer_classification]# ls
  3. cancerdetect.c cancer_detection_training_error.png edit.sh Makefile wdbc.data wdbc.names
  4. [root@cobalt cancer_classification]# make
  5. gcc -Wall -ansi -pedantic -o cancerdetect cancerdetect.c -ldeep -lm -fopenmp
  6. [root@cobalt cancer_classification]# ls
  7. cancerdetect cancerdetect.c cancer_detection_training_error.png edit.sh Makefile wdbc.data wdbc.names
  8.  
  9.  
  10. [root@cobalt cancer_classification]# ./cancerdetect
  11. Loading data set
  12. Number of training examples: 455
  13. Number of labeled training examples: 455
  14. Number of test examples: 114
  15. Number of Inputs: 31
  16. Training Completed
  17. Test data set performance is 89.2%
  18. [root@cobalt cancer_classification]# gedit cancerdetect.c
  19. [root@cobalt cancer_classification]# ls
  20. cancer_classifier.c cancer_classifier.py cancerdetect cancerdetect.c cancer_detection_training_error.png edit.sh Makefile training.png wdbc.data wdbc.names
  21. [root@cobalt cancer_classification]# cat cancer_classifier.c
  22. #include <stdio.h>
  23. #include <stdlib.h>
  24. #include <string.h>
  25. #include <math.h>
  26.  
  27. const int no_of_input_fields = 31;
  28. const int no_of_inputs = 31;
  29. const int no_of_hiddens = 16;
  30. const int no_of_outputs = 1;
  31. const int hidden_layers = 3;
  32.  
  33. int field_length[] = {
  34. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  35. };
  36.  
  37. float input_range_min[] = {
  38. 8670.0000000000,6.9809999466,9.7100000381,43.7900009155,143.5000000000,0.0526299998,0.0193799995,0.0000000000,0.0000000000,0.1059999987,0.0499599986,0.1115000024,0.3601999879,0.7570000291,6.8020000458,0.0017130000,0.0022519999,0.0000000000,0.0000000000,0.0078819999,0.0008948000,7.9299998283,12.0200004578,50.4099998474,185.1999969482,0.0711700022,0.0272899996,0.0000000000,0.0000000000,0.1564999968,0.0550399981
  39. };
  40.  
  41. float input_range_max[] = {
  42. 911320512.0000000000,28.1100006104,39.2799987793,188.5000000000,2501.0000000000,0.1633999944,0.3454000056,0.4268000126,0.2011999935,0.3039999902,0.0974399969,2.8729999065,4.8850002289,21.9799995422,542.2000122070,0.0311299991,0.1353999972,0.3959999979,0.0527900010,0.0789500028,0.0298400000,36.0400009155,49.5400009155,251.1999969482,4254.0000000000,0.2225999981,1.0579999685,1.2519999743,0.2910000086,0.6638000011,0.2074999958
  43. };
  44.  
  45. float output_range_min[] = {
  46. 0.0000000000
  47. };
  48.  
  49. float output_range_max[] = {
  50. 1.0000000000
  51. };
  52.  
  53. float hidden_layer_0_weights[] = {
  54. -0.9083125591,0.9865429997,-0.0922546536,0.8962144256,0.9439165592,-1.4453366995,-0.9341831803,-0.3211356401,-0.2886949480,-0.7166118622,-1.4835492373,0.4218343198,-0.7604712844,0.3060995936,0.3472554684,-0.9448848367,-0.3789427876,-0.3305997252,-0.3684950471,-0.2945158780,-0.4981182814,1.0068292618,-0.2026927471,0.8550595641,0.8142016530,-1.4730248451,-0.4798020720,-0.1696054488,-0.1956051290,-0.2974152863,-0.6875151396,0.2733448744,0.2775807977,-1.9982736111,0.2538615763,0.0058400235,0.8027703762,0.2283239216,-0.3594495356,0.2745459378,0.3923798203,-0.2694142461,-0.4796995819,-1.1577682495,-0.4413440228,-0.4104983509,-0.4022268057,-0.4966268241,-0.4853517711,0.0351176485,-0.4376319945,-0.4431476593,-0.1308994591,-2.4077181816,-0.1706147492,-0.3648248017,0.0662060678,-0.1617158353,-0.4641275108,0.4555280507,-0.1497680694,-0.4474073946,-0.5205269456,-0.1420345753,1.0318286419,-0.1660764664,-0.3817318678,-1.2814683914,-0.4326916337,-0.4063679874,-0.7160403728,-0.6864289641,-1.0104858875,-1.1083328724,-0.8405697942,-0.9840355515,-0.9160858393,-1.3259512186,-0.0703247637,-0.2681921422,-0.5902132392,-1.3198490143,-0.5236393213,-0.0626955852,1.2774056196,-0.0401388444,-0.3120070398,-0.9042608142,0.5698702931,0.6029071212,0.2845299542,-0.1028928608,0.0239302702,-0.5560398102,-0.4431225955,0.6310439110,-0.4086552560,-0.5182475448,-0.5870360136,-0.1332745105,-0.4934627414,-0.6006423235,-0.2073865533,0.0209451690,-0.6172048450,-0.0951782390,-0.5545420051,-0.4761863053,-0.5985544920,-0.0807592943,-0.2284225225,-0.5551309586,-0.2759757042,-0.1775378436,-0.5586566925,0.6295384169,-0.5360899568,-0.5428016782,-0.4817620516,0.1020148098,-0.1395699382,-0.4241458178,0.0230175648,0.0498031490,-0.6427946687,-1.1099957228,-0.1688757986,-1.0665203333,-1.1332565546,0.4022238255,0.2366036326,-0.0103140371,-0.5606905222,-0.3983362019,1.0083599091,-1.0196654797,-0.5786682963,-0.9834442139,-0.9638238549,-0.3003260493,0.0582330935,-0.2344885468,-0.4001433253,-0.9235205650,-0.0734718665,-0.9476802945,0.3708665669,-0.8816242814,-0.9626275897,1.2673701048,0.9444426894,0.9050939679,0.4977110922,0.0629790276,1.1740853786,-1.5650031567,-0.1656547636,-0.7059151530,-0.1289703995,-0.4117302001,-0.1552348286,0.8655638695,0.3198883533,-0.1431726366,0.0677371696,0.7442107201,-0.4648827016,0.4472548664,-0.3292329013,-0.5955043435,-0.4891011417,1.9625970125,1.0788871050,1.6727279425,0.2474196106,1.2406488657,-0.9641067982,-1.5749017000,-0.8119250536,-1.0302606821,-1.6557840109,0.1269375533,-0.0827311948,-0.0719200447,-1.3699311018,-0.3552294970,-0.3177903295,0.6125373840,0.2219150364,0.6849402785,0.4370473027,-0.2009999305,-0.1277731508,1.8369467258,1.4039473534,1.1885242462,-0.4094216526,0.5635102391,-0.7497523427,0.3928791285,0.0646440163,0.5101993680,-0.4261657894,-0.5240697265,-0.2182591558,0.4472911656,-0.7194256186,1.4767879248,1.1416428089,1.3758684397,0.9005768299,1.0195021629,-0.4773099422,1.0650326014,1.3212687969,1.2550985813,-0.1651929617,-0.5177761912,0.4640086293,-0.3376107812,0.4290308356,0.3744649887,0.6867566705,-0.6715289950,0.2513839006,0.5109618306,-2.0366928577,-0.5198799372,-0.0052643493,-0.7488560081,-0.1682706922,-0.0301111806,0.5074880719,-1.0813009739,-0.3803800046,-0.0540230386,-2.1653625965,-0.5470069647,0.8136113882,0.1322867870,0.6549454331,0.6062688828,1.6933108568,-0.8691470623,0.0808262080,0.7482303381,-1.7803932428,-0.3616199195,0.5105573535,-0.2699060142,-1.0140544176,-0.2705810964,-0.3429244459,0.6524998546,0.1655328870,-0.7648274302,-0.2818037868,0.6095790267,0.1732391566,-0.5000848770,-1.0015480518,-0.4620234966,-0.3997814655,-0.4516014457,-0.5167820454,-0.5242839456,-0.4214194417,-0.1331995577,-0.4744135439,-0.4000599682,-1.3217858076,-0.3673164845,-0.4213481247,0.3167729378,-0.0410065204,-0.6119219065,-0.1231018677,0.3823527098,-0.1806510985,0.1699473262,-0.2974574566,1.1012402773,-0.2929649949,-0.3191972673,0.4098037779,0.0612374172,-0.3719814122,-0.1287550032,-0.7748419046,0.1436230689,0.1560765207,1.9845205545,0.1431594044,-0.1281647235,0.8614560366,0.0668753311,-0.4506946802,0.1719192415,0.0687152520,-0.1218940020,-0.6538484097,0.7330561280,-0.6467366815,-0.6164603829,-0.3049659729,-0.7873327136,-1.2117861509,-0.9605661035,-1.6565786600,-0.7607443929,-0.1054124907,-0.1903837025,-0.1563756615,-0.2655580938,-0.1594227999,-0.6969703436,-0.3963861167,-0.5506105423,-0.6632725000,-0.1295657456,-0.1778565794,-0.3666824996,-0.2456177622,-0.3029136062,-0.2207289189,-0.6318684816,-0.3889057338,-0.2224504054,-0.6448858976,0.2834547162,-0.1759510636,-0.3134253025,-0.2535585761,-0.2788391709,-0.3322110772,-0.8712815046,-0.1414231360,-0.2858198285,-0.6510809660,0.2443595231,-0.1172984093,-0.5991865396,0.1539840549,-0.5355092287,0.1841458827,0.0014519021,-0.5330184698,0.2331583500,-0.2868297100,-0.3894757330,-0.7218559980,-0.0420667082,-0.4761398733,-0.0848639309,-0.3465501964,-0.2961480618,-0.6138138771,0.2700135112,0.0097798584,-0.1556629390,-0.1479286402,0.0161906779,-0.3111110628,-0.8497656584,-0.1837847829,-0.3712725341,-1.0832805634,0.4415338039,-0.1619740427,-0.4228253067,-0.5119847059,0.0090498691,-0.4499011934,-0.1944580674,0.5594497323,-0.2295137048,-0.3177419603,0.1318750381,-0.5844151974,-0.6698023081,-0.4173647761,0.4174393415,-0.5484631658,-0.2609616220,0.2095521241,-0.3180493712,-0.3544847965,-0.2826232016,-0.7357374430,-0.4831141829,-0.2028519064,-0.2050594687,-0.5325515866,-0.1481059194,0.7102542520,-0.2252110988,-0.2494413257,0.1263380349,-0.7491526008,-0.7638271451,-0.2948207855,-0.0107326694,-0.7066964507,-1.9247231483,-0.2782409191,-0.4073245823,-0.2687783837,-0.2482541054,1.0563793182,0.5197287798,-1.0777184963,-0.3258465528,0.5010194182,0.8403241634,-0.1818272769,0.2916556597,-0.1455937773,-0.1833490580,0.3164393306,-0.0604895093,-0.5683360696,-0.0905844122,0.6389922500,-0.0418473259,-0.6512514353,-0.9531012177,-0.6217289567,-0.5229881406,0.2698959112,-0.1164300591,-1.3933123350,-0.6844323874,-0.1093943939,-0.1327682734,0.1690997630,-0.2597705424,0.0133952377,-0.2818377912,-0.3544915020,0.1378521770,-0.5088074803,-0.7152920365,-0.4317994714,0.7313212156,-0.4704135656,-0.1950139850,0.4353159368,-0.2838630974,-0.2795073688,-0.4139089286,-0.6970056295,-0.4616298676,-0.2961705923,0.3061946929,-0.5193379521,-0.4046391845,0.1553962976,-0.4193218350,-0.4123912752,-0.2055408955,-0.6744360924,-0.7711653113,-0.5285550356,0.2960430980,-0.6955375075,1.3144730330,-0.1308511198,-0.8401475549,-0.1622292548,-0.3013446331,-0.3228581548,0.1091550589,-0.5651814938,-0.5164007545,-0.3350134194,-0.0293626655,-0.6105398536,-0.6599978209,-0.4762144983,-0.4598141015,-0.3959772587,0.1976682991,-0.1761395931,-0.3038606048,-0.3089794517,-0.1852073967,-0.4867189229,-1.1360787153,-0.4350156784,-0.4353526235,-0.4426147640,0.4023990929,-0.2038277239,-0.2712825537,-0.2338174433,0.0151083777
  55. };
  56.  
  57. float hidden_layer_1_weights[] = {
  58. 0.9615622759,-0.6569443345,-0.1740828902,-1.0333874226,-0.9404944181,-2.5177397728,1.9842921495,1.3554984331,-0.7982870340,-1.5568989515,-0.8619155884,-0.9732566476,-0.3788504899,-1.5093562603,-0.7511134148,-0.8225638270,0.0534105450,-1.7118729353,0.8744085431,-0.0275072865,-0.5722650290,-2.0021383762,0.0029708706,0.0992452949,-1.1955423355,-0.0047491970,-0.4756024480,-0.8619042635,0.3687855005,-1.0454216003,-0.1304717362,-0.8685945272,-1.2076680660,0.2444646955,-1.0720101595,-0.3598691821,-0.6569214463,1.2622214556,-1.7209475040,-0.9626014233,0.0431604087,-0.2076106071,-0.3541895151,-0.0009855838,-0.4366145432,0.5021838546,-0.2375511527,0.2008366287,-1.1554070711,-0.0050322702,-1.3522816896,-0.0062926705,-1.3110586405,0.0130445166,-2.8990893364,-1.3777163029,0.3650225699,0.9620068073,0.1250179857,0.0161570385,0.5786595345,1.5810582638,0.9739863873,0.2928573489,-0.2183057517,-2.4910643101,0.6420422792,0.3932255507,-1.1149380207,-0.4626885355,-1.7233577967,-1.2113361359,-1.8404529095,1.9476372004,-0.3009847701,-0.6295224428,0.4686891437,-0.8728956580,0.0500763096,-1.0503492355,-0.8871239424,1.1995924711,-1.7335253954,-0.6921710372,-1.3937889338,1.5864719152,-2.5013756752,-1.1140000820,0.5102817416,-0.4690515995,-0.2529288828,0.3283356130,-0.6098122597,0.9576253295,-0.1529540867,0.5535222888,-0.3162852228,-0.0820408091,-0.0011176824,-0.4893454313,-0.4332258403,-1.7520831823,-0.9534000754,0.0264332611,-0.0657420605,-1.5694730282,-0.3918594420,-0.4551174045,-0.4205757678,-0.7805284262,-0.4911211133,-0.0043271021,-1.4477349520,-1.6784049273,0.2686372399,-0.4248503447,1.4602936506,-2.1293513775,3.5809512138,-0.0418690443,-0.8516212702,-0.9628146291,-1.1043149233,-1.6489679813,-0.2082884461,-0.9991977811,-0.5772381425,-1.2917057276,-0.5173305273,-1.0628840923,-0.8582130671,-1.0148420334,-0.9008430243,2.1157743931,1.3672325611,-1.1405473948,-1.4754502773,-0.1726782322,-1.0085595846,-0.6370169520,-1.2732557058,-1.5091273785,-1.2646994591,-0.9467900395,-3.1677458286,-0.4325684905,-0.9279787540,-0.2989479601,2.6687021255,0.1181607172,-0.6431459188,-1.0552672148,0.2146118432,-0.7343901396,-1.0731648207,-1.1135658026,-0.7490192056,0.5940829515,-0.7428227663,-0.4361740649,1.6406726837,-0.6769548655,-1.3179038763,-1.7552185059,-1.8032145500,-2.4215848446,4.1240348816,1.0251678228,-1.1227250099,-1.5162444115,-1.1080743074,-1.3571126461,-0.6963583827,-1.7032947540,-0.9262604713,-1.4481885433
  59. };
  60.  
  61. float hidden_layer_2_weights[] = {
  62. -1.6710283756,0.1254047006,0.2049068809,1.0130106211,0.7105194926,-0.4026021063,-0.5296008587,-0.5709745288,-1.2934466600,0.2533759475,-2.8505768776,0.3476035297,-0.9213171601,-0.3690319061,-0.7021193504,-1.3931630850,-0.0204979163,0.2347471267,-1.8284649849,-0.9106302261,-2.2078063488,0.1547747254,-2.4034748077,-2.2343130112,1.3830624819,-0.5245770216,-1.6137760878,1.2066642046,-0.5234108567,-1.5775728226,0.5784761906,1.4153552055,-3.7275691032,-0.3056330085,-0.6322737336,-0.5414893627,-0.3087929189,-1.3640328646,-0.4160118103,0.4339452386,-1.1057772636,-2.1363005638,-0.8935866356,-1.3092074394,0.6781557202,0.6663103104,-0.6393445730,-0.8122572303,1.1393954754,-0.9447405934,-0.5089616179,-1.2569508553,0.1818754524,-3.1657009125,1.2069873810,3.7606625557,1.0620192289,-2.1450390816,-4.2261672020,-2.1926138401,-3.8169140816,0.7916007042,4.9515981674,1.4004255533,0.2504684329,4.9405889511
  63. };
  64.  
  65. float hidden_layer_0_bias[] = {
  66. 0.6181324124,1.8872829676,0.9269785881,1.5168503523,-1.4261891842,1.4081763029,-5.5887274742,0.7285218239,1.6046845913,0.6376208067,1.7793174982,2.3228693008,1.0623555183,1.9755007029,1.4494509697,2.1478548050
  67. };
  68.  
  69. float hidden_layer_1_bias[] = {
  70. 1.4420576096,0.9327847958,1.2410703897,1.1467977762,0.1800597161,0.9034799933,0.9626649618,1.2787275314,0.2558526397,-0.1022905409,1.0937976837
  71. };
  72.  
  73. float hidden_layer_2_bias[] = {
  74. 2.1061658859,1.0651272535,1.8806397915,1.3954360485,0.5891510248,-0.6260715127
  75. };
  76.  
  77. float output_layer_weights[] = {
  78. 1.3344805241,-0.0261665583,0.0595993847,-0.1729268432,0.2767946124,3.1529698372
  79. };
  80.  
  81. float output_layer_bias[] = {
  82. -2.3145215511
  83. };
  84.  
  85. float inputs[31];
  86. float network_inputs[31];
  87. float prev_hiddens[16];
  88. float hiddens[16];
  89. float outputs[1];
  90.  
  91. /* Encode some text into the input units */
  92. void encode_text(char * text,
  93. float * inputs, int no_of_inputs,
  94. int offset, int max_field_length_chars)
  95. {
  96. int pos = offset, i, bit, max_chars = strlen(text);
  97.  
  98. if (max_chars > (no_of_inputs-offset)/8) {
  99. max_chars = ((no_of_inputs-offset)/8);
  100. }
  101. if (max_chars > max_field_length_chars) {
  102. max_chars = max_field_length_chars;
  103. }
  104.  
  105. /* for each character in the string */
  106. for (i = 0; i < max_chars; i++) {
  107. /* set the bits for this character */
  108. for (bit = 0; bit < 8; bit++, pos++) {
  109. if (text[i] & (1<<bit)) {
  110. inputs[pos] = 0.75f;
  111. }
  112. else {
  113. inputs[pos] = 0.25f;
  114. }
  115. }
  116. }
  117. /* set the remaining inputs within the field to neutral */
  118. while (i < max_field_length_chars) {
  119. for (bit = 0; bit < 8; bit++) {
  120. if (pos >= no_of_inputs) {
  121. i = max_field_length_chars;
  122. break;
  123. }
  124. inputs[pos++] = 0.5f;
  125. }
  126. i++;
  127. }
  128. }
  129.  
  130. int main(int argc, char* argv[])
  131. {
  132. int i,j,pos;
  133. float sum;
  134.  
  135. if (argc < 31) return -1;
  136.  
  137. /* Obtain input values from command arguments */
  138. for (i = 1; i < argc; i++) {
  139. if (i > no_of_inputs) return -2;
  140. inputs[i-1] = atof(argv[i]);
  141. }
  142.  
  143. pos = 0;
  144. for (i = 0; i < no_of_input_fields; i++) {
  145. if (field_length[i] == 0) {
  146. /* Normalise numeric inputs into a 0.25 - 0.75 range */
  147. network_inputs[pos] = 0.25f + ((inputs[i] - input_range_min[i])*0.5f/(input_range_max[i] - input_range_min[i]));
  148. if (network_inputs[pos] < 0.25f) network_inputs[pos] = 0.25f;
  149. if (network_inputs[pos] > 0.75f) network_inputs[pos] = 0.75f;
  150. pos++;
  151. }
  152. else {
  153. /* text value */
  154. encode_text(argv[i+1], network_inputs, no_of_inputs,
  155. pos, field_length[i]/8);
  156. pos += field_length[i];
  157. }
  158. }
  159.  
  160. /* Hidden layer 0 */
  161. for (i = 0; i < no_of_hiddens; i++) {
  162. sum = hidden_layer_0_bias[i];
  163. for (j = 0; j < no_of_inputs; j++) {
  164. sum += hidden_layer_0_weights[i*no_of_inputs+j]*network_inputs[j];
  165. }
  166. hiddens[i] = 1.0f / (1.0f + exp(-sum));
  167. }
  168. for (i = 0; i < no_of_hiddens; i++) {
  169. prev_hiddens[i] = hiddens[i];
  170. }
  171.  
  172. /* Hidden layer 1 */
  173. for (i = 0; i < 11; i++) {
  174. sum = hidden_layer_1_bias[i];
  175. for (j = 0; j < 16; j++) {
  176. sum += hidden_layer_1_weights[i*16+j]*prev_hiddens[j];
  177. }
  178. hiddens[i] = 1.0f / (1.0f + exp(-sum));
  179. }
  180. for (i = 0; i < 11; i++) {
  181. prev_hiddens[i] = hiddens[i];
  182. }
  183.  
  184. /* Hidden layer 2 */
  185. for (i = 0; i < 6; i++) {
  186. sum = hidden_layer_2_bias[i];
  187. for (j = 0; j < 11; j++) {
  188. sum += hidden_layer_2_weights[i*11+j]*prev_hiddens[j];
  189. }
  190. hiddens[i] = 1.0f / (1.0f + exp(-sum));
  191. }
  192. for (i = 0; i < 6; i++) {
  193. prev_hiddens[i] = hiddens[i];
  194. }
  195.  
  196. /* Output layer */
  197. for (i = 0; i < no_of_outputs; i++) {
  198. sum = output_layer_bias[i];
  199. for (j = 0; j < 6; j++) {
  200. sum += output_layer_weights[i*6+j]*prev_hiddens[j];
  201. }
  202. outputs[i] = 1.0f / (1.0f + exp(-sum));
  203. }
  204.  
  205. for (i = 0; i < no_of_outputs; i++) {
  206. /* Convert outputs from 0.25 - 0.75 back to their original range */
  207. outputs[i] = output_range_min[i] + ((outputs[i]-0.25f)*(output_range_max[i] - output_range_min[i])/0.5f);
  208. /* Send the outputs to stdout */
  209. printf("%.10f",outputs[i]);
  210. if (i < no_of_outputs-1) {
  211. printf(" ");
  212. }
  213. }
  214.  
  215. printf("\n");
  216. return 0;
  217. }
  218. [root@cobalt cancer_classification]#
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement