Predicting Cable Dynamics with Physical Attention Bias: checkpoints
The final checkpoints (step 100,000) of the 39 runs reported in Predicting Cable Dynamics with Physical Attention Bias, an extended abstract at the NeurIPS 2026 Workshop on Symmetry and Geometry in Neural Representations (NeurReps).
Authors: Avihai Giuili*, Rotem Atari*, Avishai Sintov (Tel Aviv University), Maya Bechler-Speicher (Meta AI). *Equal contribution.
Paper: arXiv:2610.11975 · Code: github.com/avihaig/dlogps · Dataset: avihaig/dlogps-cables
The model
A GraphGPS-style learned simulator of a falling cable (33 vertices). Each layer runs a GatedGCN over the chain edges in parallel with dense attention over all vertices. A physical attention bias subtracts a distance, scaled by one learned rate per head, from the attention logits. The variants differ only in which distance each head receives: arc-length along the cable (chain), Euclidean distance in space, both, or none. The model predicts per-vertex displacements and is rolled out autoregressively. The block is d = 128, 8 heads, 4 layers (891k parameters), trained 100k steps at batch 512.
What is here
The layout is the code repository's results/runs/. Each
<experiment>/<label>/ folder holds the checkpoint
checkpoints/step_100000.pt and the run's record: the resolved config.yaml,
env.json (code version, library versions, GPU, timings), the training log
(train_log.jsonl, train_log.txt) and the unseen-test scorecard under
eval/model/ (summary, per window, per cable, per frame).
| experiment | labels (seeds 0, 1, 2) | model |
|---|---|---|
local_on |
varA_s*, varB_s*, varC_s*, varD_s*, varF_s* |
hybrid block: GatedGCN and global attention |
local_off |
the same | global attention only |
chain_only |
chain_s* |
GatedGCN only, no attention |
structfree |
mlp_pernode_s*, lstm_global_s* |
per-node MLP, global LSTM |
The records keep the experiment names and labels the runs had during
development (for example b7_encoding, varF_enc_s0). provenance.csv maps
each folder to its source run, the commit of the authors' development
repository it ran from, and whether that working tree had uncommitted changes.
Every checkpoint loads in the public code, and every cell of the paper's Tables
1 and 2 is recomputed from these records. The local-on runs predate the phase
split that Table 2 reads, so each local_on folder also holds
eval/rescore/: its checkpoint re-scored with the public code
(scripts/evaluate_final.sh) on the released test root.
Variant letters, for the 8 heads: A Unbiased · B Euclidean on every head · C Chain on every head · D Mixed (two heads Euclidean, two chain, four unbiased) · F Euclidean+Chain only (four heads each).
Usage
git clone https://github.com/avihaig/dlogps && cd dlogps && uv sync
scripts/fetch_checkpoints.sh # all 39 into results/runs/<experiment>/<label>/checkpoints/
from dlogps.harness.train import load_checkpoint
ckpt = load_checkpoint("results/runs/local_on/varF_s0/checkpoints/step_100000.pt")
model = ckpt.restore_model() # eval mode; the input normalization is ckpt.stats
To re-score a checkpoint on the paper's test set, fetch unseen_cables_test
from the dataset, link
it with scripts/link_data.sh, and run
scripts/evaluate_final.sh results/runs/local_on/varF_s0.
Each file is a torch.save dictionary of tensors and plain values with no
pickled classes, so it loads with torch.load(path, weights_only=True).
Results
Unseen-cable test, 400 windows of 400-frame rollouts. Cell: mean of seed means ± mean of window sds ± sd of seed means; bold is the lowest mean in its block. Lower is better.
| rel ℓ2 (frac. of L) | link-length drift δ (frac. of ℓ0) | self-intersection v (frac. of frames) | |
|---|---|---|---|
| local stream on | |||
| Unbiased | 0.0325 ± 0.0281 ± 0.0058 | 0.0300 ± 0.0159 ± 0.0032 | 0.171 ± 0.231 ± 0.009 |
| Euclidean | 0.0320 ± 0.0267 ± 0.0042 | 0.0303 ± 0.0135 ± 0.0021 | 0.174 ± 0.229 ± 0.032 |
| Chain | 0.0316 ± 0.0341 ± 0.0057 | 0.0271 ± 0.0124 ± 0.0023 | 0.167 ± 0.227 ± 0.030 |
| Mixed | 0.0302 ± 0.0251 ± 0.0067 | 0.0267 ± 0.0109 ± 0.0030 | 0.168 ± 0.229 ± 0.012 |
| Euclidean+Chain only | 0.0297 ± 0.0288 ± 0.0035 | 0.0275 ± 0.0129 ± 0.0007 | 0.165 ± 0.229 ± 0.012 |
| local stream off | |||
| Unbiased | 0.0399 ± 0.0246 ± 0.0002 | 0.1693 ± 0.1891 ± 0.0030 | 0.216 ± 0.258 ± 0.006 |
| Euclidean | 0.0382 ± 0.0279 ± 0.0007 | 0.1470 ± 0.2232 ± 0.0178 | 0.208 ± 0.262 ± 0.020 |
| Chain | 0.0339 ± 0.0195 ± 0.0008 | 0.0783 ± 0.0382 ± 0.0040 | 0.174 ± 0.241 ± 0.004 |
| Mixed | 0.0352 ± 0.0211 ± 0.0016 | 0.0779 ± 0.0455 ± 0.0036 | 0.172 ± 0.242 ± 0.016 |
| Euclidean+Chain only | 0.0343 ± 0.0202 ± 0.0002 | 0.0784 ± 0.0409 ± 0.0013 | 0.161 ± 0.234 ± 0.006 |
| baselines | |||
| chain only | 0.0925 ± 0.0838 ± 0.0720 | 0.0812 ± 0.0589 ± 0.0322 | 0.115 ± 0.191 ± 0.024 |
| MLP | 0.0868 ± 0.0785 ± 0.0163 | 1.35 ± 2.32 ± 0.73 | 0.435 ± 0.256 ± 0.010 |
| LSTM | 0.1070 ± 0.0911 ± 0.0397 | 0.2819 ± 0.3124 ± 0.0509 | 0.082 ± 0.150 ± 0.031 |
Citation
@inproceedings{giuili2026predicting,
title = {Predicting Cable Dynamics with Physical Attention Bias},
author = {Giuili, Avihai and Atari, Rotem and Sintov, Avishai and Bechler-Speicher, Maya},
booktitle = {NeurIPS 2026 Workshop on Symmetry and Geometry in Neural Representations (NeurReps)},
year = {2026},
eprint = {2610.11975},
archivePrefix = {arXiv},
primaryClass = {cs.RO},
url = {https://arxiv.org/abs/2610.11975}
}
License
CC BY 4.0, the license of the paper. The code repository is MIT.