export async function loadMNIST(device, sampleCount = 1000) {
    async function loadFile(path) {
        const res = await fetch(path);
        return new Uint8Array(await res.arrayBuffer());
    }

    const imgRaw = await loadFile("../../models/train-images-idx3-ubyte");
    const lblRaw = await loadFile("../../models/train-labels-idx1-ubyte");

    const header = 16;
    const fullCount = lblRaw.length - 8;
    const count = Math.min(sampleCount, fullCount);

    const images = new Float32Array(count * 28 * 28);
    const labels = new Uint32Array(count);

    for (let i = 0; i < count; i++) {
        labels[i] = lblRaw[8 + i];
        const src = header + i * 784;
        const dst = i * 784;
        for (let j = 0; j < 784; j++) {
            images[dst + j] = imgRaw[src + j] / 255;
        }
    }

    return { images, labels, count };
}
