Downloads · 30 days
0
phclab/MushroomBody_Chess
MushroomBody_Chess is a machine learning model from phclab. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as cc-by-nc-4.0.
Synaptic weights for BeatTheFly -- A Smart Fruit Fly is playing chess against you: a spiking network wired as the real Drosophila mushroom-body connectome that plays chess.
Downloads · 30 days
0
Access
Public
Updated Sep 14, 2026
Repo size
102 MB
Likes
1
Public
Click a slice to open those files.
.bin51.1 MB · 100%
From the Hugging Face model README
Synaptic weights for BeatTheFly -- A Smart Fruit Fly is playing chess against you: a spiking network wired as the real Drosophila mushroom-body connectome that plays chess.
The anatomical connectome gives you wiring, not synaptic strengths. Ours are trained.
Synaptic weights trained with PHCSSM parallel-scan mode, deployment in sequential RSNN mode (PHCSSM).
made by Po-Han Chiang @ NYCU
Data sources: human games from the Lichess open database (lichess.org, CC0); move labels from the Stockfish chess engine.
The previous version remains in this repository's history.
4,000 held-out Lichess games between players rated 2200+, legal moves only:
| overall | opening | early middlegame | middlegame | endgame | |
|---|---|---|---|---|---|
| agrees with Stockfish's best move | 44.7% | 92.8% | 60.2% | 38.2% | 31.4% |
Human move-match on the same games: 39.1%; on held-out Lichess blitz games (1500–1800): 36.4%.
Strength: ≈1110 Elo (95% CI ±39) vs Stockfish UCI_Elo anchors, CCRL Blitz scale, 800 games, argmax play. +139 Elo over v1 on the same openings (95% CI +75 to +211).
manifest.json -- every tensor (file, dtype, shape, bytes), the model scalars and a connectome audit.info.json -- neuron metadata used by the page (cell classes, hemispheres, soma coordinates).selfcheck_<precision>.json -- reference moves and logits that the page replays when it loads.chess_uci_vocab.json -- the move vocabulary.fp16/, fp32/ -- raw little-endian arrays.Two precisions are listed in the manifest: fp16w32 (default, 49.5 MB: float16 for the
four large dense matrices, float32 for the recurrent weights and all small tensors) and
fp16 (47.8 MB, recurrent weights in float16 as well).
The recurrent weight matrix W[dst, src] is stored in CSC order by source neuron (W_colptr,
W_rowidx, W_vals): each step multiplies W by a sparse binary spike vector, so the engine visits only
the columns of the neurons that spiked. Dense matrices are stored in the orientation they are read:
enc_tok_T [vocab, H] (a move token selects one row), enc_brd_T [789, H] (sum of the active rows),
dec_w [vocab, H] and v2d_T [vocab, n_dan].
| name | file | dtype | shape |
|---|---|---|---|
enc_tok_T | fp16/enc_tok_T.bin | float16 | 1970x4510 |
enc_tok_b | fp32/enc_tok_b.bin | float32 | 4510 |
ln_tok_w | fp32/ln_tok_w.bin | float32 | 4510 |
ln_tok_b | fp32/ln_tok_b.bin | float32 | 4510 |
enc_brd_T | fp16/enc_brd_T.bin | float16 | 789x4510 |
enc_brd_b | fp32/enc_brd_b.bin | float32 | 4510 |
ln_brd_w | fp32/ln_brd_w.bin | float32 | 4510 |
ln_brd_b | fp32/ln_brd_b.bin | float32 | 4510 |
v2d_T | fp16/v2d_T.bin | float16 | 1970x340 |
v2d_b | fp32/v2d_b.bin | float32 | 340 |
dec_w | fp16/dec_w.bin | float16 | 1970x4510 |
dec_b | fp32/dec_b.bin | float32 | 1970 |
Wg | fp32/Wg.bin | float32 | 97x340 |
W_dan_val | fp32/W_dan_val.bin | float32 | 97x340 |
alpha_exc | fp32/alpha_exc.bin | float32 | 4510 |
alpha_inh | fp32/alpha_inh.bin | float32 | 4510 |
v_th | fp32/v_th.bin | float32 | 4510 |
reset_weight | fp32/reset_weight.bin | float32 | 4510 |
kc_idx | fp32/kc_idx.bin | int32 | 4064 |
mbon_idx | fp32/mbon_idx.bin | int32 | 97 |
dan_idx | fp32/dan_idx.bin | int32 | 340 |
W_colptr | fp32/W_colptr.bin | uint32 | 4511 |
W_rowidx | fp32/W_rowidx.bin | uint16 | 828479 |
W_vals | fp32/W_vals.bin | float32 | 828479 |
Numerical check: legal top-1 1968/1973 vs the fp32 reference (24 held-out games); 0 of 8,925,290 spike bits differ from the reference on the same weights.
There is no search and no evaluation function: each move is a single timestep of the network. It is weakest in the endgame (31.4% agreement with Stockfish's best move).
Weights: CC-BY-NC-4.0. They are derived from the MaleCNS v1.0 connectome (Janelia FlyEM and collaborators, https://male-cns.janelia.org/, CC-BY-4.0) and trained with PHCSSM (https://arxiv.org/abs/2604.01295); please credit both.
PHCSSM: https://arxiv.org/abs/2604.01295