How chloridesnail/neural-network works
This is a browser-based handwritten-digit training demo: a user draws a digit, the browser encodes the 40×40 canvas as 1,600 binary inputs, and Flask sends those inputs and the supplied label to a from-scratch neural network. The network trains and returns a guess and loss; the browser currently logs that response. The model loads and saves weights in JSON. The README describes prediction as a capability, and prediction is implemented inside the network, but no browser prediction endpoint is shown. The graph reflects the sampled source; unsampled HTML details and serving behavior are not expanded.
Main entry points: server.py Flask routes · network.py Network training · script.js Canvas encoding · index.html Drawing page
Components 7
Browser input
- Drawing page
web-application/index.html - Canvas encoding
web-application/script.js
Flask API
- Flask routes
neural-network/server.py
Neural network
- Network training
neural-network/network.py - Layer calculations
neural-network/layer.py
Model state
- Saved weights
neural-network/model.json
Other components
- Digit user
Connections 11
- Digit user → Drawing page: opens
- Digit user → Canvas encoding: draws and labels
- Flask routes → Drawing page: serves page
- Flask routes → Canvas encoding: serves assets
- Canvas encoding → Flask routes: POSTs inputs and label
- Flask routes → Network training: trains
- Network training → Layer calculations: constructs and calculates
- Network training → Network training: forwards and predicts
- Flask routes → Saved weights: loads on startup
- Network training → Saved weights: saves weights
- Flask routes → Canvas encoding: returns guess and loss