www.xbdev.net
xbdev - software development
Friday February 6, 2026
Home | Contact | Support | WebGPU Graphics and Compute ... | Neural Networks and WebGPU Compute.. Learning from Data.....
     
 

Neural Networks and WebGPU Compute..

Learning from Data.....

 


Happy or Sad Smiley Face



• Network (48*48,15,15,2)


Complete Code





// Learning smiley - deep neural network setup
// (48x48) pixel values (input)
// (15,15) hidden layers 
// (2) sad or happy

await xinitialize( {layers:[2304,15,15,2], build:'cpu'learningrate:0.1} );

let div document.createElement('div');
document.body.appendChilddiv );
div.innerHTML = `
<br><br>
<canvas id="mycanvas" width="48" height="48" style="border:1px solid #ff0000;"> </canvas>
<br><br>
<div id="counter">Iteration:</div>
<br>
<div id="result">Result/Output:</div>
`;

var 
canvas     null;
var 
context    null;
var 
iteration  0;    
var 
data       = []
var 
imgs       = []
    
// hard coded 20 test images loaded in (pixel data)
for (let v=0v<20; ++v)
{
    
// 10 happy and 10 sad faces
    
let suf "h0" v;
    if (
v>=10suf 's0' + (v-10);
    
    
let imgFileName "https://webgpulab.xbdev.net/var/images/smileys/" suf ".jpg";
    
    
imgs[v] = new Image();
    
imgs[v].src imgFileName;
    
imgs[v].onload = function() {
          
canvas    canvas || document.getElementById('mycanvas');
        
context       context || canvas.getContext('2d');
        
canvas.width  this.width;
        
canvas.height this.height;
        
        
context.drawImage(this00);
        
        
console.log("Dimensions: " this.width 'x' this.height);
        
        
let imgData context.getImageData(004848).data;
        
        
// convert rgba to an array of scalar values 
        
graydata = []
        for (
let kk=0kk<imgData.lengthkk+=4)
        {
            
// scale our imaeg data 0.0 to 1.0
            
graydata.pushimgData[kk] / 255.0 );
        }
        

        if ( 
10 )
            
data.push( { number:vdatain:graydatadataout:[1,0] } );
        else
            
data.push( { number:vdatain:graydatadataout:[0,1] } );
            
        
console.logdatadata.length-].dataout )
        
        if ( 
>= 18 )
        {
            
console.log('All images loaded');
        }
    }    
}
// end loop(..)


async function preview(){
    
// check if data/images is still loading
    
if ( data.length 20 )
    {
        
requestAnimationFrame(preview);
        return;
    }
    
    const 
testImage 14;
    
    
//console.log( data.length );

    
iteration++;
    
    var 
elem document.getElementById('counter');
    
elem.innerHTML "Iteration: " iteration;
    
    
// e.g., which test image you're using, h02.jpg as the test image
    
var result await xactivatedatatestImage ].datain ); 
    var 
resElm document.getElementById('result');

    var 
face "happy";
    if ( 
result[1] > result[0] ) face "sad";
    
    
resElm.innerHTML "Result (" face ") '[happy:[1,0], sad[0,1]]}: '" result;
    
    
canvas    canvas || document.getElementById('mycanvas');
    
context   context || canvas.getContext('2d');
        
    var 
imageData context.getImageData(004848);
    for (
let kk=0kk<48*48kk=kk+1)
    {
        
imageData.data[kk*0] = datatestImage ].datain[kk] * 255.0;
        
imageData.data[kk*1] = datatestImage ].datain[kk] * 255.0;
        
imageData.data[kk*2] = datatestImage ].datain[kk] * 255.0;
        
//imageData.data[kk*4 + 3] = 255; 
    
}
    
context.putImageData(imageData,0,00048,48);
    
    
requestAnimationFrame(iterate);
}

/*
 Keep training the neural network to improve its accuracy
 */
async function iterate(){
        
    for (var 
i=0i<20; ++i)
    {
        var 
dynamicRate =  .01/(1+.0005*iteration);
        
await xactivatedata[i].datain ); 
        
await xpropagatedata[i].dataoutdynamicRate );
    }

    
await preview();
}

preview();




Resources and Links


• WebGPU Lab Demo [LINK]















WebGPU by Example: Fractals, Image Effects, Ray-Tracing, Procedural Geometry, 2D/3D, Particles, Simulations WebGPU Compute graphics and animations using the webgpu api 12 week course kenwright learn webgpu api kenwright programming compute and graphics applications with html5 and webgpu api kenwright real-time 3d graphics with webgpu kenwright webgpu api develompent a quick start guide kenwright webgpu by example 2022 kenwright webgpu gems kenwright webgpu interactive compute and graphics visualization cookbook kenwright wgsl webgpu shading language cookbook kenwright wgsl webgpugems shading language cookbook kenwright



 
Advert (Support Website)

 
 Visitor:
Copyright (c) 2002-2025 xbdev.net - All rights reserved.
Designated articles, tutorials and software are the property of their respective owners.