First commit.
This commit is contained in:
27
source/mnist_loader.js
Normal file
27
source/mnist_loader.js
Normal file
@@ -0,0 +1,27 @@
|
||||
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 };
|
||||
}
|
||||
Reference in New Issue
Block a user