You are browsing as a guest. Sign up (or log in) to start making projects!

NovaMind

  • 1 Devlogs
  • 10 Total hours

A neural network built from raw NumPy (zero frameworks) that trains on MNIST to recognize handwritten digits, with a live canvas demo where you draw a digit and it predicts in real time.

Ship #1 Pending review

Built a neural network from scratch using only NumPy — no PyTorch, no TensorFlow, no autograd. Trained on MNIST (60k images), 97.91% test accuracy.

The challenging part was getting backpropagation right. Specifically, the Softmax + CrossEntropy backward pass — the combined gradient simplifies to (predictions - y_true) / batch_size, which means CrossEntropy needs no backward method at all. That only becomes obvious when you’re writing the math yourself instead of calling .backward().

Most proud of the fact that every single component — forward pass, backprop, weight updates, L2 regularization, Xavier initialization, the MNIST binary parser — is written by hand. Nothing is hidden behind a framework.

To test: draw any digit (0–9) on the canvas and click Predict Digit. Draw it centered and reasonably large for best results. The model runs entirely in the browser using weights exported from the trained NumPy model.

  • 1 devlog
  • 10h
Try project → See source code →
Open comments for this post

10h 0m 35s logged

Built NovaMind — a multi-layer perceptron trained on MNIST, written entirely from scratch using only NumPy. No PyTorch, no TensorFlow.
What I implemented by hand:

Forward and backward pass through every layer
ReLU and Softmax activations
Cross-entropy loss
Mini-batch SGD with L2 regularization (λ=0.0001)
Xavier weight initialization
Full MNIST data pipeline — download, parse IDX binary format, normalize, one-hot encode

Final results: 99.69% train accuracy, 97.91% test accuracy.
Also built:

Visualization suite — loss curve, confusion matrix, and a prediction grid showing wrong vs correct predictions
Live interactive demo — draw a digit on a browser canvas, the model predicts it in real time using trained weights exported as JSON and a forward pass written in JavaScript

GitHub: omsingh-19/NovaMind
Live demo: NovaMind MNIST Digit Recognizer

1
0
77

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…