Four Thousand Rows, Taught

starting

The trained fabric of Four Thousand Rows — 4000 random rows of 4 pixel literals, an integer synapse per row and class — with an eleventh class that starts empty. Teach it a symbol of yours. The page asks for your symbol and for digits in turn, guesses before it learns, and when it is wrong steps the synapses of the rows that fired: +1 for the true class, −1 for the one that won. Nothing else moves. Watch what your symbol costs the digits, and the digits win back.

rows 4000literals per row 4synapses ±63 trained on MNIST, test accuracy 96.8 %classes 10 + yours

Draw

draw✱your symbol — then press Done or Enter
—draw with the mouse or a finger
what the fabric sawthe rows that stepped: their on and off literals
it was:
a head steps
your samples taught 0loaded examples taught 0

Class registers

active rows 0 / 4000rows stepped 0synapses moved 0

What it costs, what it gains

—
your symbol, guessed before the step
nothing shown yet
—
your digits, guessed before the step
nothing shown yet
—
1000 training digits, recognised now
as trained; the ones it gets wrong are below, to teach
—
1000 test digits, never taught
as trained
—
your examples, recognised now
every drawing you label is kept here, to see whether later teaching undoes it
training digits it forgot 0never knew 0gained 0your examples it misses 0click one to teach it; taught ones are underlined
the test digits it gets wrong now — look, but they are never taught: forgot 0, never knew 0, gained 0
The shader that re-scores the digits after every step

How this page was made: model_keep_multi.py --export trained the fabric in the arithmetic model (28×28 MNIST binarised at 0.3, 4 epochs, Polyak-averaged readout); teach_html.py embedded the rows, the synapses, the first 1000 test digits and the first 1000 training digits, and wrote this page. The learning here is the law the fabric was trained by, run as code on your own drawings: a row is a conjunction of 4 pixel literals, an active row adds its synapses to the class registers, the largest register answers, and a wrong answer steps the active rows' synapses by one. "A head steps one row in three" is the feedback rule's step-versus-skip weight in the fabric; the model behind this page (loom/results/online.md) found that stepping every row learns a symbol in ten showings and costs the digits ten points, and that interleaving digit prompts is what wins them back.

What the page does not promise: adapting to your digits. The same model says the trained readout gains nothing visible from a few dozen digits of one hand; corrections in free drawing are applied by the same law, for honesty, not for effect. Every drawing you label is kept as an example of yours (the last 300), scored again after every step beside the MNIST digits, so forgetting shows on your own examples too; a training digit it gets wrong — forgotten by your teaching, or never known (some of those no one can read) — or a missed example can be clicked back onto the pad and taught. The digits you can teach are from the training split, which the fabric was trained on; the test digits are scored after every step and never taught, so their number stays a test score. Your synapses and your examples stay in this browser until you reset them.