diff --git a/lib/classifier.js b/lib/classifier.js new file mode 100644 index 00000000..f7627adb --- /dev/null +++ b/lib/classifier.js @@ -0,0 +1,17 @@ +Meteor.startup(function() { + var weight = 0.8; + var dimensions = 8; + var input = new convnetjs.Vol(1, 1, dimensions); + var net = new convnetjs.Net(); + net.fromJSON(TRAINED_NEURAL_NET); + + function net_classifier(features) { + input.w = features; + var softmax = net.forward(input).w; + return softmax[1] - softmax[0]; + } + + this.combined_classifier = function(features) { + return hand_tuned_classifier(features) + weight*net_classifier(features); + } +}); diff --git a/lib/net.js b/lib/net.js new file mode 100644 index 00000000..69df86f3 --- /dev/null +++ b/lib/net.js @@ -0,0 +1 @@ +this.TRAINED_NEURAL_NET = {"layers":[{"out_depth":8,"out_sx":1,"out_sy":1,"layer_type":"input"},{"out_depth":8,"out_sx":1,"out_sy":1,"layer_type":"fc","num_inputs":8,"l1_decay_mul":0,"l2_decay_mul":1,"filters":[{"sx":1,"sy":1,"depth":8,"w":{"0":-0.3044261605666167,"1":-0.14834922423083324,"2":0.20219401661574177,"3":0.5503522616459873,"4":0.45502127328350234,"5":0.2625745186594936,"6":0.012889731022695689,"7":-0.2675923800252626,"BYTES_PER_ELEMENT":8,"buffer":{"0":183,"1":140,"2":235,"3":220,"4":183,"5":123,"6":211,"7":191,"8":214,"9":172,"10":58,"11":125,"12":27,"13":253,"14":194,"15":191,"16":244,"17":222,"18":103,"19":88,"20":126,"21":225,"22":201,"23":63,"24":164,"25":146,"26":161,"27":88,"28":124,"29":156,"30":225,"31":63,"32":183,"33":41,"34":239,"35":139,"36":17,"37":31,"38":221,"39":63,"40":43,"41":243,"42":153,"43":90,"44":5,"45":206,"46":208,"47":63,"48":29,"49":223,"50":146,"51":105,"52":238,"53":101,"54":138,"55":63,"56":243,"57":129,"58":55,"59":202,"60":59,"61":32,"62":209,"63":191,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":-0.5596639882456166,"1":-0.2794084096442046,"2":-0.1125698422524117,"3":-0.08850676702777903,"4":0.06317601682543969,"5":-0.18247248453514878,"6":0.2940108272454184,"7":0.9861821092760742,"BYTES_PER_ELEMENT":8,"buffer":{"0":121,"1":113,"2":200,"3":115,"4":196,"5":232,"6":225,"7":191,"8":251,"9":140,"10":105,"11":207,"12":211,"13":225,"14":209,"15":191,"16":206,"17":111,"18":253,"19":142,"20":96,"21":209,"22":188,"23":191,"24":143,"25":231,"26":219,"27":37,"28":97,"29":168,"30":182,"31":191,"32":166,"33":36,"34":40,"35":174,"36":77,"37":44,"38":176,"39":63,"40":69,"41":201,"42":191,"43":36,"44":66,"45":91,"46":199,"47":191,"48":54,"49":24,"50":236,"51":201,"52":18,"53":209,"54":210,"55":63,"56":147,"57":182,"58":103,"59":200,"60":205,"61":142,"62":239,"63":63,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":-0.4293240703659736,"1":0.48799666353430715,"2":-0.011221411170891243,"3":0.016759551491042825,"4":-0.10178241490300455,"5":-0.05938636975897821,"6":-0.7140555216543757,"7":-0.13033896328056724,"BYTES_PER_ELEMENT":8,"buffer":{"0":157,"1":224,"2":102,"3":170,"4":11,"5":122,"6":219,"7":191,"8":60,"9":247,"10":155,"11":91,"12":86,"13":59,"14":223,"15":63,"16":118,"17":154,"18":243,"19":79,"20":64,"21":251,"22":134,"23":191,"24":71,"25":217,"26":50,"27":118,"28":106,"29":41,"30":145,"31":63,"32":136,"33":249,"34":80,"35":143,"36":105,"37":14,"38":186,"39":191,"40":152,"41":205,"42":226,"43":231,"44":227,"45":103,"46":174,"47":191,"48":151,"49":20,"50":33,"51":247,"52":138,"53":217,"54":230,"55":191,"56":91,"57":160,"58":87,"59":120,"60":242,"61":174,"62":192,"63":191,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":0.004132243204399921,"1":0.31644328046013015,"2":-0.4246219644532225,"3":0.021888719524958525,"4":-0.5736499683744954,"5":-0.1285778687631867,"6":-0.17633637428199953,"7":-0.09184800562849475,"BYTES_PER_ELEMENT":8,"buffer":{"0":192,"1":147,"2":192,"3":150,"4":248,"5":236,"6":112,"7":63,"8":174,"9":95,"10":39,"11":81,"12":155,"13":64,"14":212,"15":63,"16":243,"17":89,"18":159,"19":154,"20":1,"21":45,"22":219,"23":191,"24":33,"25":71,"26":11,"27":26,"28":255,"29":105,"30":150,"31":63,"32":245,"33":162,"34":176,"35":45,"36":87,"37":91,"38":226,"39":191,"40":225,"41":227,"42":169,"43":86,"44":61,"45":117,"46":192,"47":191,"48":171,"49":117,"50":81,"51":184,"52":48,"53":146,"54":198,"55":191,"56":195,"57":144,"58":96,"59":212,"60":89,"61":131,"62":183,"63":191,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":0.09461892805990832,"1":-0.6329745552844204,"2":-0.7923676394624737,"3":-0.08606445900172546,"4":0.11603124920286288,"5":0.029252054814320392,"6":-0.03747907757038657,"7":-0.6005289047981558,"BYTES_PER_ELEMENT":8,"buffer":{"0":238,"1":145,"2":153,"3":49,"4":242,"5":56,"6":184,"7":63,"8":2,"9":178,"10":196,"11":218,"12":83,"13":65,"14":228,"15":191,"16":40,"17":205,"18":60,"19":97,"20":19,"21":91,"22":233,"23":191,"24":226,"25":165,"26":194,"27":4,"28":82,"29":8,"30":182,"31":191,"32":39,"33":236,"34":163,"35":84,"36":57,"37":180,"38":189,"39":63,"40":169,"41":190,"42":18,"43":43,"44":64,"45":244,"46":157,"47":63,"48":220,"49":234,"50":229,"51":40,"52":117,"53":48,"54":163,"55":191,"56":21,"57":37,"58":205,"59":100,"60":136,"61":55,"62":227,"63":191,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":0.42277438855180405,"1":1.4138688143060145,"2":-0.3778547415032166,"3":-0.012023049493322651,"4":0.11825224526479829,"5":-0.4434819918251306,"6":-0.6772974432572635,"7":-0.14741163123927092,"BYTES_PER_ELEMENT":8,"buffer":{"0":56,"1":166,"2":26,"3":79,"4":188,"5":14,"6":219,"7":63,"8":68,"9":117,"10":228,"11":231,"12":52,"13":159,"14":246,"15":63,"16":53,"17":69,"18":89,"19":167,"20":197,"21":46,"22":216,"23":191,"24":118,"25":224,"26":249,"27":98,"28":138,"29":159,"30":136,"31":191,"32":225,"33":67,"34":23,"35":118,"36":199,"37":69,"38":190,"39":63,"40":126,"41":63,"42":208,"43":74,"44":2,"45":98,"46":220,"47":191,"48":35,"49":138,"50":14,"51":176,"52":107,"53":172,"54":229,"55":191,"56":204,"57":128,"58":156,"59":99,"60":98,"61":222,"62":194,"63":191,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":1.1993670420146874,"1":0.3223431096192715,"2":-0.36861400047798204,"3":-0.08038294233717612,"4":0.2711210775205418,"5":0.42879169827918595,"6":0.6376085656983045,"7":0.03756028253259824,"BYTES_PER_ELEMENT":8,"buffer":{"0":72,"1":167,"2":213,"3":126,"4":155,"5":48,"6":243,"7":63,"8":56,"9":247,"10":121,"11":254,"12":68,"13":161,"14":212,"15":63,"16":111,"17":164,"18":57,"19":45,"20":95,"21":151,"22":215,"23":191,"24":167,"25":146,"26":126,"27":252,"28":249,"29":147,"30":180,"31":191,"32":158,"33":63,"34":77,"35":56,"36":12,"37":90,"38":209,"39":63,"40":32,"41":242,"42":57,"43":188,"44":82,"45":113,"46":219,"47":63,"48":161,"49":91,"50":42,"51":20,"52":74,"53":103,"54":228,"55":63,"56":127,"57":73,"58":54,"59":242,"60":25,"61":59,"62":163,"63":63,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":0.13967402583430144,"1":-0.11357850366802424,"2":-0.5746610827627967,"3":-0.5717582875884522,"4":-0.1898576928922138,"5":-0.18657398702306335,"6":0.7165884005339106,"7":-0.6224249593531741,"BYTES_PER_ELEMENT":8,"buffer":{"0":200,"1":140,"2":135,"3":166,"4":214,"5":224,"6":193,"7":63,"8":72,"9":100,"10":200,"11":22,"12":123,"13":19,"14":189,"15":191,"16":82,"17":1,"18":152,"19":163,"20":159,"21":99,"22":226,"23":191,"24":132,"25":25,"26":77,"27":9,"28":216,"29":75,"30":226,"31":191,"32":97,"33":219,"34":238,"35":194,"36":65,"37":77,"38":200,"39":191,"40":127,"41":49,"42":70,"43":10,"44":168,"45":225,"46":199,"47":191,"48":23,"49":142,"50":31,"51":204,"52":74,"53":238,"54":230,"55":63,"56":54,"57":90,"58":148,"59":191,"60":231,"61":234,"62":227,"63":191,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}}],"biases":{"sx":1,"sy":1,"depth":8,"w":{"0":0.2562049254190115,"1":-0.5455393081802729,"2":0.10903726980643962,"3":-0.16355954769541572,"4":0.08992117884673975,"5":0.5185622512844232,"6":-0.46073562437071663,"7":0.38509647559811017,"BYTES_PER_ELEMENT":8,"buffer":{"0":232,"1":235,"2":239,"3":87,"4":169,"5":101,"6":208,"7":63,"8":182,"9":34,"10":234,"11":217,"12":14,"13":117,"14":225,"15":191,"16":27,"17":33,"18":221,"19":211,"20":221,"21":233,"22":187,"23":63,"24":73,"25":114,"26":38,"27":238,"28":132,"29":239,"30":196,"31":191,"32":206,"33":80,"34":93,"35":10,"36":19,"37":5,"38":183,"39":63,"40":140,"41":157,"42":198,"43":220,"44":15,"45":152,"46":224,"47":63,"48":65,"49":143,"50":177,"51":69,"52":177,"53":124,"54":221,"55":191,"56":113,"57":235,"58":31,"59":176,"60":107,"61":165,"62":216,"63":63,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}}},{"out_depth":8,"out_sx":1,"out_sy":1,"layer_type":"tanh"},{"out_depth":8,"out_sx":1,"out_sy":1,"layer_type":"fc","num_inputs":8,"l1_decay_mul":0,"l2_decay_mul":1,"filters":[{"sx":1,"sy":1,"depth":8,"w":{"0":-0.38832824611419614,"1":0.5331207710690121,"2":-0.16958013252471874,"3":-0.03763800230330026,"4":-0.30277152771651167,"5":-0.03899235791753754,"6":0.4840579241426027,"7":-0.5416342032769544,"BYTES_PER_ELEMENT":8,"buffer":{"0":208,"1":26,"2":75,"3":183,"4":94,"5":218,"6":216,"7":191,"8":37,"9":233,"10":145,"11":74,"12":83,"13":15,"14":225,"15":63,"16":149,"17":92,"18":159,"19":65,"20":205,"21":180,"22":197,"23":191,"24":29,"25":122,"26":245,"27":201,"28":73,"29":69,"30":163,"31":191,"32":183,"33":243,"34":108,"35":212,"36":155,"37":96,"38":211,"39":191,"40":226,"41":120,"42":25,"43":108,"44":206,"45":246,"46":163,"47":191,"48":229,"49":249,"50":99,"51":22,"52":206,"53":250,"54":222,"55":63,"56":111,"57":6,"58":175,"59":64,"60":17,"61":85,"62":225,"63":191,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":-0.11439407632270632,"1":-1.2819890886327963,"2":0.14634106395136273,"3":0.14304395032875164,"4":0.2297327647600765,"5":0.4348725634157742,"6":-0.26416425812412686,"7":0.058453811796899485,"BYTES_PER_ELEMENT":8,"buffer":{"0":196,"1":130,"2":169,"3":32,"4":238,"5":72,"6":189,"7":191,"8":119,"9":27,"10":152,"11":253,"12":6,"13":131,"14":244,"15":191,"16":57,"17":209,"18":221,"19":209,"20":77,"21":187,"22":194,"23":63,"24":205,"25":188,"26":70,"27":160,"28":67,"29":79,"30":194,"31":63,"32":147,"33":106,"34":187,"35":27,"36":226,"37":103,"38":205,"39":63,"40":148,"41":25,"42":115,"43":187,"44":243,"45":212,"46":219,"47":63,"48":21,"49":147,"50":90,"51":52,"52":17,"53":232,"54":208,"55":191,"56":180,"57":10,"58":253,"59":115,"60":168,"61":237,"62":173,"63":63,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":-0.1406881916489247,"1":0.9405578660965507,"2":0.004901858025518234,"3":-0.2326645372062353,"4":-0.21448421502002576,"5":-1.0893898213683164,"6":-0.3778283066766321,"7":-0.37747385299064595,"BYTES_PER_ELEMENT":8,"buffer":{"0":178,"1":98,"2":8,"3":23,"4":18,"5":2,"6":194,"7":191,"8":221,"9":42,"10":92,"11":207,"12":12,"13":25,"14":238,"15":63,"16":254,"17":58,"18":140,"19":126,"20":248,"21":19,"22":116,"23":63,"24":82,"25":176,"26":30,"27":153,"28":243,"29":199,"30":205,"31":191,"32":139,"33":118,"34":130,"35":0,"36":56,"37":116,"38":203,"39":191,"40":137,"41":244,"42":117,"43":5,"44":36,"45":110,"46":241,"47":191,"48":231,"49":119,"50":43,"51":199,"52":86,"53":46,"54":216,"55":191,"56":234,"57":39,"58":108,"59":23,"60":136,"61":40,"62":216,"63":191,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":0.3710384010689571,"1":-0.6190881680177,"2":0.41162941225861827,"3":-0.543618129725223,"4":0.6163330090258718,"5":0.7949110806898168,"6":-0.7884090007104152,"7":0.38478012561877223,"BYTES_PER_ELEMENT":8,"buffer":{"0":239,"1":174,"2":137,"3":217,"4":23,"5":191,"6":215,"7":63,"8":25,"9":64,"10":95,"11":253,"12":145,"13":207,"14":227,"15":191,"16":230,"17":60,"18":238,"19":227,"20":34,"21":88,"22":218,"23":63,"24":49,"25":215,"26":21,"27":217,"28":81,"29":101,"30":225,"31":191,"32":186,"33":195,"34":166,"35":0,"36":0,"37":185,"38":227,"39":63,"40":18,"41":78,"42":217,"43":92,"44":233,"45":111,"46":233,"47":63,"48":118,"49":139,"50":61,"51":131,"52":165,"53":58,"54":233,"55":191,"56":205,"57":188,"58":235,"59":209,"60":60,"61":160,"62":216,"63":63,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":0.2740006754893999,"1":-0.8544168596508195,"2":0.07387149782516346,"3":-0.18854684467760982,"4":0.5306163852118577,"5":0.5217519355682549,"6":-0.16672917486486497,"7":0.23335567893271977,"BYTES_PER_ELEMENT":8,"buffer":{"0":182,"1":196,"2":19,"3":33,"4":58,"5":137,"6":209,"7":63,"8":200,"9":61,"10":171,"11":6,"12":98,"13":87,"14":235,"15":191,"16":41,"17":255,"18":67,"19":19,"20":62,"21":233,"22":178,"23":63,"24":243,"25":192,"26":211,"27":145,"28":77,"29":34,"30":200,"31":191,"32":4,"33":157,"34":166,"35":54,"36":207,"37":250,"38":224,"39":63,"40":200,"41":125,"42":124,"43":29,"44":49,"45":178,"46":224,"47":63,"48":97,"49":181,"50":170,"51":176,"52":97,"53":87,"54":197,"55":191,"56":79,"57":11,"58":173,"59":80,"60":153,"61":222,"62":205,"63":63,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":-0.1906626781357325,"1":0.4709381707241033,"2":0.24160919622692853,"3":0.6311757769867091,"4":-0.3203913931138507,"5":-0.5879387228046364,"6":0.39346084678734317,"7":-0.3561015790308374,"BYTES_PER_ELEMENT":8,"buffer":{"0":78,"1":147,"2":148,"3":119,"4":162,"5":103,"6":200,"7":191,"8":123,"9":173,"10":108,"11":218,"12":217,"13":35,"14":222,"15":63,"16":131,"17":143,"18":26,"19":214,"20":12,"21":237,"22":206,"23":63,"24":5,"25":238,"26":5,"27":139,"28":151,"29":50,"30":228,"31":63,"32":240,"33":1,"34":214,"35":230,"36":74,"37":129,"38":212,"39":191,"40":252,"41":238,"42":79,"43":222,"44":100,"45":208,"46":226,"47":191,"48":154,"49":81,"50":77,"51":103,"52":118,"53":46,"54":217,"55":63,"56":50,"57":115,"58":255,"59":70,"60":94,"61":202,"62":214,"63":191,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":-0.052332119821916476,"1":0.5000167096781711,"2":0.26266568911062693,"3":0.26506535297601835,"4":-0.25463287277049923,"5":0.08282611179305391,"6":0.9396179911813585,"7":-0.5542899781400487,"BYTES_PER_ELEMENT":8,"buffer":{"0":102,"1":186,"2":84,"3":142,"4":70,"5":203,"6":170,"7":191,"8":66,"9":174,"10":240,"11":10,"12":35,"13":0,"14":224,"15":63,"16":136,"17":187,"18":32,"19":192,"20":131,"21":207,"22":208,"23":63,"24":165,"25":107,"26":149,"27":171,"28":212,"29":246,"30":208,"31":63,"32":237,"33":74,"34":66,"35":173,"36":231,"37":75,"38":208,"39":191,"40":10,"41":240,"42":103,"43":145,"44":23,"45":52,"46":181,"47":63,"48":200,"49":109,"50":219,"51":191,"52":89,"53":17,"54":238,"55":63,"56":7,"57":150,"58":19,"59":86,"60":190,"61":188,"62":225,"63":191,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":0.5183573300646674,"1":-0.8084279309930922,"2":0.17564116878772115,"3":-0.4120839198806116,"4":0.5760434856452349,"5":0.35578634913953205,"6":-0.3705548599822078,"7":0.44300177295886806,"BYTES_PER_ELEMENT":8,"buffer":{"0":195,"1":160,"2":136,"3":28,"4":98,"5":150,"6":224,"7":63,"8":142,"9":57,"10":153,"11":64,"12":164,"13":222,"14":233,"15":191,"16":27,"17":34,"18":227,"19":233,"20":104,"21":123,"22":198,"23":63,"24":191,"25":15,"26":198,"27":59,"28":149,"29":95,"30":218,"31":191,"32":179,"33":113,"34":125,"35":191,"36":242,"37":110,"38":226,"39":63,"40":199,"41":184,"42":122,"43":27,"44":52,"45":197,"46":214,"47":63,"48":21,"49":214,"50":63,"51":187,"52":43,"53":183,"54":215,"55":191,"56":45,"57":106,"58":187,"59":27,"60":36,"61":90,"62":220,"63":63,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}}],"biases":{"sx":1,"sy":1,"depth":8,"w":{"0":0.013187463476726313,"1":-0.007630520124428615,"2":-0.27144190488489406,"3":-0.30429595726968894,"4":-0.05004981783245224,"5":0.07003641753819947,"6":-0.09093686693747323,"7":0.05757614475366814,"BYTES_PER_ELEMENT":8,"buffer":{"0":83,"1":65,"2":204,"3":98,"4":7,"5":2,"6":139,"7":63,"8":200,"9":155,"10":44,"11":38,"12":46,"13":65,"14":127,"15":191,"16":234,"17":166,"18":15,"19":222,"20":77,"21":95,"22":209,"23":191,"24":30,"25":208,"26":49,"27":192,"28":149,"29":121,"30":211,"31":191,"32":36,"33":180,"34":133,"35":53,"36":33,"37":160,"38":169,"39":191,"40":122,"41":6,"42":219,"43":26,"44":232,"45":237,"46":177,"47":63,"48":77,"49":69,"50":127,"51":117,"52":163,"53":71,"54":183,"55":191,"56":50,"57":88,"58":126,"59":213,"60":158,"61":122,"62":173,"63":63,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}}},{"out_depth":8,"out_sx":1,"out_sy":1,"layer_type":"tanh"},{"out_depth":2,"out_sx":1,"out_sy":1,"layer_type":"fc","num_inputs":8,"l1_decay_mul":0,"l2_decay_mul":1,"filters":[{"sx":1,"sy":1,"depth":8,"w":{"0":1.0172730016739508,"1":-0.13221137581570833,"2":0.9395466221657038,"3":-1.6251860610880569,"4":-1.2388309137808013,"5":0.8533890654636394,"6":0.7649152131278658,"7":-1.7907313802649556,"BYTES_PER_ELEMENT":8,"buffer":{"0":167,"1":177,"2":20,"3":14,"4":192,"5":70,"6":240,"7":63,"8":37,"9":209,"10":164,"11":103,"12":77,"13":236,"14":192,"15":191,"16":96,"17":155,"18":232,"19":19,"20":196,"21":16,"22":238,"23":63,"24":185,"25":156,"26":100,"27":25,"28":195,"29":0,"30":250,"31":191,"32":188,"33":101,"34":63,"35":93,"36":64,"37":210,"38":243,"39":191,"40":76,"41":197,"42":221,"43":149,"44":246,"45":78,"46":235,"47":63,"48":16,"49":27,"50":19,"51":120,"52":47,"53":122,"54":232,"55":63,"56":244,"57":138,"58":162,"59":242,"60":213,"61":166,"62":252,"63":191,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}},{"sx":1,"sy":1,"depth":8,"w":{"0":-1.252270530582403,"1":0.7285270999976606,"2":0.023798576828390303,"3":1.064484519454345,"4":0.246286754788085,"5":-1.2474340354253382,"6":-0.3051491951725839,"7":1.4177785201450572,"BYTES_PER_ELEMENT":8,"buffer":{"0":43,"1":137,"2":233,"3":210,"4":76,"5":9,"6":244,"7":191,"8":105,"9":171,"10":151,"11":16,"12":24,"13":80,"14":231,"15":63,"16":172,"17":87,"18":173,"19":116,"20":167,"21":94,"22":152,"23":63,"24":154,"25":121,"26":98,"27":235,"28":32,"29":8,"30":241,"31":63,"32":163,"33":91,"34":160,"35":10,"36":83,"37":134,"38":207,"39":63,"40":43,"41":27,"42":33,"43":100,"44":125,"45":245,"46":243,"47":191,"48":158,"49":175,"50":106,"51":125,"52":144,"53":135,"54":211,"55":191,"56":165,"57":232,"58":143,"59":135,"60":56,"61":175,"62":246,"63":63,"byteLength":64},"length":8,"byteOffset":0,"byteLength":64}}],"biases":{"sx":1,"sy":1,"depth":2,"w":{"0":-0.008745691297802017,"1":0.00874569129780175,"BYTES_PER_ELEMENT":8,"buffer":{"0":71,"1":251,"2":214,"3":208,"4":66,"5":233,"6":129,"7":191,"8":173,"9":250,"10":214,"11":208,"12":66,"13":233,"14":129,"15":63,"byteLength":16},"length":2,"byteOffset":0,"byteLength":16}}},{"out_depth":2,"out_sx":1,"out_sy":1,"layer_type":"softmax","num_inputs":2}]}; diff --git a/lib/stroke_extractor.js b/lib/stroke_extractor.js index fff8382b..dfe97848 100644 --- a/lib/stroke_extractor.js +++ b/lib/stroke_extractor.js @@ -503,7 +503,7 @@ this.get_glyph_render_data = function(glyph, manual_bridges, classifier) { } } var log = []; - var bridges = get_bridges(endpoints, classifier || hand_tuned_classifier); + var bridges = get_bridges(endpoints, classifier || combined_classifier); var strokes = extract_strokes( paths, endpoints, manual_bridges || bridges, log); var expected = UNIHAN_STROKE_COUNTS[glyph.name]; diff --git a/server/training.js b/server/training.js index 1014c518..3fa760e9 100644 --- a/server/training.js +++ b/server/training.js @@ -8,7 +8,7 @@ function evaluate(glyphs, classifier) { return num_correct/glyphs.length; } -Meteor.startup(function() { +function train_neural_net() { var glyphs = Glyphs.find({'manual.verified': true}).fetch(); var sample = _.sample(glyphs, 400); console.log('Hand-tuned accuracy:', evaluate(sample, hand_tuned_classifier)); @@ -52,7 +52,7 @@ Meteor.startup(function() { } console.log('Iteration', iteration, 'mean loss:', loss/round_data.length); } - console.log('Trained neural network.'); + console.log('Trained neural network:', JSON.stringify(net.toJSON())); function net_classifier(features) { assert(input.w.length === features.length); @@ -73,4 +73,4 @@ Meteor.startup(function() { console.log('Weight', weights[i], 'combined accuracy:', evaluate(sample, combined_classifier(weights[i]))); } -}); +}