Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uncaught (in promise) Error: Failed to compile fragment shader

So I'm using tensorflow JS and python for training models. Now I'm working on the website so that abstract doctors could upload an MRI image and get the prediction. Here's my code:

<script>
    async function LoadModels(){  
               model = undefined;
               model = await tf.loadLayersModel("http://127.0.0.1:5500/modelsBrain/modelBrain.json");
               const image = document.getElementById("image");
               const image1 = tf.browser.fromPixels(image);
               const image2 = tf.reshape(image1, [1,200,200,3]);
               const prediction = model.predict(image2);
               const softmaxPred = prediction.softmax().dataSync();
               alert(softmaxPred);

               let top5 = Array.from(softmaxPred)
                    .map(function (p, i) {
                        return {
                            probability: p,
                            className: TARGET_CLASSES_BRAIN[i]
                        };
                    }).sort(function (a, b) {
                        return b.probability - a.probability;
                    }).slice(0, 4);
                    
            const pred = [[]];
            top5.forEach(function (p) {
            pred.push(p.className, p.probability);
            alert(p.className + ' ' + p.probability);
        });
            }

    const fileInput = document.getElementById("file-input");
    const image = document.getElementById("image");

    function getImage() {
        if(!fileInput.files[0])
        throw new Error("Image not found");
        const file = fileInput.files[0];

        const reader = new FileReader();

        reader.onload = function (event) {
            const dataUrl = event.target.result;
            const imageElement = new Image();
            imageElement.src = dataUrl;

            imageElement.onload = async function () {
                image.setAttribute("src", this.src);
                image.setAttribute("height", this.height);
                image.setAttribute("width", this.width);
                await LoadModels();
            };
        };

        reader.readAsDataURL(file);
    }
    fileInput.addEventListener("change", getImage);
</script>

This error occurrs not every (!) Live Server open. I am confused, what seems to be the problem?

enter image description here

like image 511
Elizabeth Grant Avatar asked Dec 27 '25 21:12

Elizabeth Grant


1 Answers

Error CONTEXT_LOST_WEBGL is 99% due to low GPU memory - what kind of HW do you have available? Alternatively, you can try WASM backend which runs computation on CPU and doesn't require GPU resources.

Btw, you're not deallocating your tensors anywhere so if you're running this in a loop for multiple inputs, you do have a massive memory leak. But if error occurs on the first input already, your GPU simply is not good enough for this model.

like image 65
Vladimir Mandic Avatar answered Dec 30 '25 11:12

Vladimir Mandic



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!