First commit.

This commit is contained in:
2025-11-19 10:42:46 +01:00
commit 22c29a8939
33 changed files with 5985 additions and 0 deletions

40
source/loadMNIST.js Normal file
View File

@@ -0,0 +1,40 @@
export async function loadBinary(url) {
const response = await fetch(url);
if (!response.ok) throw new Error("Failed to load " + url);
const buffer = await response.arrayBuffer();
return buffer;
}
// Loads MNIST 28x28 grayscale images + labels
export async function loadMNIST() {
const imgBuf = await loadBinary("/models/MNIST-2k-images.bin");
const lblBuf = await loadBinary("/models/MNIST-2k-labels.bin");
const images = new Float32Array(imgBuf); // already normalized [0..1]
const labels = new Uint8Array(lblBuf);
const sampleCount = labels.length;
console.log("MNIST Loaded:", sampleCount, "samples");
return { images, labels, sampleCount };
}
// Utility visualization helper for debugging
export function showImage(img784, canvas) {
const size = 28;
canvas.width = size;
canvas.height = size;
const ctx = canvas.getContext("2d");
const imgData = ctx.createImageData(size, size);
for (let i = 0; i < size * size; i++) {
const v = Math.floor(img784[i] * 255);
imgData.data[i * 4 + 0] = v;
imgData.data[i * 4 + 1] = v;
imgData.data[i * 4 + 2] = v;
imgData.data[i * 4 + 3] = 255;
}
ctx.putImageData(imgData, 0, 0);
}