Code viewer for World: Character recognition neur...

// Cloned by Rashmi Das on 2 Dec 2022 from World "Character recognition neural network (clone by Akash Gupta)" by Akash Gupta 
// Please leave this clone trail here.
 
const PIXELS=28,PIXELSSQUARED=PIXELS*PIXELS,NOTRAIN=6e4,NOTEST=1e4;var classifier;const noinput=PIXELSSQUARED,nohidden=64,nooutput=10,learningrate=.1;let do_training=!0;const TRAINPERSTEP=1,TESTPERSTEP=5,ZOOMFACTOR=7,ZOOMPIXELS=7*PIXELS,canvaswidth=PIXELS+ZOOMPIXELS+50,canvasheight=3*ZOOMPIXELS+100,DOODLE_THICK=18,DOODLE_BLUR=3;let mnist,nn,doodle,demo,trainrun=1,train_index=0,testrun=1,test_index=0,total_tests=0,total_correct=0,doodle_exists=!1,demo_exists=!1,mousedrag=!1;var train_inputs,test_inputs,demo_inputs,doodle_inputs,thehtml,pixelBrain;function randomWeight(){return AB.randomFloatAtoB(-.5,.5)}function finishedTraining(){console.log("training complete"),classifyImage()}function classifyImage(){let e={image:getImage(mnist.train_images[100]).pixels};pixelBrain.classify(e,gotResults)}function gotResults(e,t){console.log("Inside Got results"),null==t&&console.log("results is null"),e&&console.log("ERROR "+e.message)}function addExample(){console.log("In add Example");for(var e=0;e<100;e++){var t=getImage(mnist.train_images[e]),n=mnist.train_labels[e];train_index++;let i={image:t},a={label:n};pixelBrain.addData(i,a)}}function setup(){createCanvas(canvaswidth,canvasheight),(doodle=createGraphics(ZOOMPIXELS,ZOOMPIXELS)).pixelDensity(1),AB.loadingScreen();let e={task:"imageClassification",inputs:[28,28,4],debug:!0};$.getScript("/uploads/akash037/ml5.min.js",function(){console.log("Load Success"),$.getScript("/uploads/codingtrain/matrix.js",function(){$.getScript("/uploads/codingtrain/nn.js",function(){$.getScript("/uploads/codingtrain/mnist.js",function(){console.log("All JS loaded"),pixelBrain=ml5.neuralNetwork(e),(nn=new NeuralNetwork(noinput,nohidden,nooutput)).setLearningRate(learningrate),loadData()})})})})}function loadData(){loadMNIST(function(e){mnist=e,console.log("All data loaded into mnist object:"),AB.removeLoading()})}function getImage(e){let t=createImage(PIXELS,PIXELS);t.loadPixels();for(let n=0;n<PIXELSSQUARED;n++){let i=e[n],a=4*n;t.pixels[a+0]=i,t.pixels[a+1]=i,t.pixels[a+2]=i,t.pixels[a+3]=255}return t.updatePixels(),t}function getInputs(e){let t=[];for(let n=0;n<PIXELSSQUARED;n++){let i=e[n];t[n]=i/255}return t}function arrayToImage(e){for(var t=new Uint8ClampedArray(3136),n=0;n<28;n++)for(var i=0;i<28;i++){var a=4*(28*n+i);t[a]=45,t[a+1]=23,t[a+2]=155,t[a+3]=255}return t}function oneDimensionTo2D(e,t){for(var n=[],i=0;i<t;i++){n[i]=[];for(var a=0;a<t;a++)n[i][a]=e[4*(i*t+a)]}return n}function getImageData(e){return{data:getImage(e).pixels}}function trainit(e){for(var t=0;t<=50;t++){let e=mnist.train_images[t],n=mnist.train_labels[t],i={image:getImage(e)},a={label:n};pixelBrain.addData(i,a)}pixelBrain.train({epochs:2},finishedTraining)}function testit(){}function find12(e){let t=0,n=0,i=0,a=0;for(let o=0;o<e.length;o++)e[o]>i?(n=t,a=i,t=o,i=e[o]):e[o]>a&&(n=o,a=e[o]);return[t,n]}function findMax(e){let t=0,n=0;for(let i=0;i<e.length;i++)e[i]>n&&(t=i,n=e[i]);return t}AB.headerCSS({"max-height":"95vh"});var val=!0;function draw(){if(void 0!==mnist&&(background("black"),do_training&&val)){for(let e=0;e<TRAINPERSTEP;e++)trainit(0==e);val=!1}}function makeDemo(){demo_exists=!0;var e=AB.randomIntAtoB(0,NOTEST-1);demo=mnist.test_images[e];var t=mnist.test_labels[e];thehtml="Test image no: "+e+"<br>Classification: "+t+"<br>",AB.msg(thehtml,8)}function drawDemo(){var e=getImage(demo);image(e,0,canvasheight-ZOOMPIXELS,ZOOMPIXELS,ZOOMPIXELS),image(e,ZOOMPIXELS+50,canvasheight-ZOOMPIXELS,PIXELS,PIXELS)}function guessDemo(){let e=getInputs(demo);demo_inputs=e;let t=findMax(nn.predict(e));thehtml=" We classify it as: "+greenspan+t+"</span>",AB.msg(thehtml,9)}function drawDoodle(){let e=doodle.get();image(e,0,0,ZOOMPIXELS,ZOOMPIXELS),image(e,ZOOMPIXELS+50,0,PIXELS,PIXELS)}function guessDoodle(){let e=doodle.get();e.resize(PIXELS,PIXELS),e.loadPixels()}function wipeDoodle(){doodle_exists=!1,doodle.background("black")}function showInputs(e){var t="";for(let n=0;n<e.length;n++){n%PIXELS==0&&(t+="\n"),t=t+" "+e[n].toFixed(2)}console.log(t)}