Views
No views yet
128×128 binary grid → z ∈ ℝ¹⁰²⁴ → 128×128 logits.model.py in the GitHub repository — it is not
duplicated here, so there is one definition rather than two that can drift.1git clone https://github.com/themantralab/gol-emergence-pipeline.git
2cd gol-emergence-pipeline
3pip install -r requirements.txt1import torch
2from huggingface_hub import hf_hub_download
3from model import Encoder, Decoder
4
5path = hf_hub_download("themantralab/gol-emergence-pipeline", "best.pt")
6ckpt = torch.load(path, map_location="cpu", weights_only=False)
7print(ckpt["step"], ckpt["metrics"]) # 148500, alive_f1 0.916896
8
9enc, dec = Encoder(), Decoder(kernel_size=1)
10enc.load_state_dict(ckpt["encoder"]); enc.eval()
11dec.load_state_dict(ckpt["decoder"]); dec.eval()
12
13import engine, numpy as np
14grid = engine.embed_seeds(np.random.randint(0, 2, (1, 16, 16), dtype=np.uint8))
15x = torch.from_numpy(grid.astype(np.float32)).unsqueeze(1)
16with torch.no_grad():
17 z = enc(x) # (1, 1024)
18 recon = torch.sigmoid(dec(z)).squeeze() > 0.5checkpoints/best.pt in the repository root to run the diagnostics
unmodified — they all load that path.encoder, decoder (state dicts), step, metrics,
per_q (per-lifespan-quartile validation metrics).
269,139,477 bytes, SHA-256 b2a2ca4b9e19c9e24070b347d45ccf9ec72261a74ae43a62dccb84dfc9247243.kernel=2, stride=2 downsample stages with
1×1 channel-mixing refines, then a linear projection to ℝ¹⁰²⁴. Each of the
16×16 trunk positions sees exactly one disjoint 8×8 input tile — no
overlapping receptive fields. python3 model.py verifies this: flip one input
pixel and exactly 1 of 256 trunk positions changes, while ~988 of the 1024
latent dimensions do.PixelShuffle 2× upsamples
with kernel=1 convolutions, final 1×1 conv. No layer mixes signal between
adjacent output pixels, so the decoder cannot paint a probability halo around
true cells — which is what makes near-exact cell placement possible.design/03_final_architecture.md.RESULTS.md.z_t → z_{t+1} predictor
collapses under closed-loop rollout — F1 0.344 ± 0.011 at horizon 1 to
0.009 ± 0.003 at horizon 60 — while the teacher-forced ceiling stays flat at
0.929–0.946. Predicting no change beats it at every horizon.
(dynamics_probe.py, persistence_baseline.py)probe_behavior_class.py)n4_offset_curve.py)border_test.py)world_model_readiness.py)1@misc{koegler2026golae,
2 author = {Koegler, Maxwell},
3 title = {{Game of Life autoencoder (step 148,500)}},
4 year = {2026},
5 publisher = {Mantra Labs},
6 url = {https://huggingface.co/themantralab/gol-emergence-pipeline}
7}