diff options
| -rw-r--r-- | RAIN_EP_DILLAVOU_MATRIX.md | 15 | ||||
| -rwxr-xr-x | experiments/rain_ep_dillavou_c0.sh | 67 |
2 files changed, 80 insertions, 2 deletions
diff --git a/RAIN_EP_DILLAVOU_MATRIX.md b/RAIN_EP_DILLAVOU_MATRIX.md index 8e1b0e3..3e8c30d 100644 --- a/RAIN_EP_DILLAVOU_MATRIX.md +++ b/RAIN_EP_DILLAVOU_MATRIX.md @@ -33,7 +33,7 @@ coincide. A difference between them is neither predicted nor claimed. - FashionMNIST with the author's 32x32 augmentation; - author ConvHopfieldEnergy32 architecture, gains and per-layer rates; - beta 0.25, 15 training relaxation iterations, 60 inference iterations; -- batch size 100 and 100-epoch cosine schedule. +- batch size 128 and 100-epoch cosine schedule. ## S0 development screen @@ -41,7 +41,8 @@ S0 uses only a fixed training/holdout split with 10,000 training and 2,000 holdout examples. One epoch selects a non-catastrophic offset magnitude from the frozen grid `0.003, 0.01, 0.03, 0.1`. The same wave includes clean PEP, random-sign beta, centered EP, and one SDIL arm. S0 is development evidence -and is never reported as a final result. +and is never reported as a final result. S0 and S0b used batch size 100, not +the author's batch size 128. S0 did not select a magnitude. Clean PEP reached 57.55% holdout accuracy, while raw offsets from 0.003 through 0.1 reached 60.0--61.8%. At this short @@ -67,6 +68,16 @@ The stronger-beta proxy was non-monotonic: beta 0.5 reached 54.40%, beta 1.0 reached 8.50%, and beta 2.0 became nonfinite. These are one-seed, one-epoch development observations, not confirmation results. +## C0 full-data trajectory check + +C0 freezes ratio 1.0 before launch and returns to the exact author data and +batch protocol: all 60,000 FashionMNIST training examples, the 10,000-example +test set, batch size 128, and the first 10 epochs of the unchanged 100-epoch +cosine schedule. One seed runs eight cells: positive EP clean/raw/constant/ +SDIL, random-sign clean/raw, and centered clean/raw. C0 checks whether the S0b +separation persists beyond a small development subset. It is still not the +multi-seed 100-epoch confirmation. + ## Confirmation matrix After S0 freezes one offset magnitude, the full author horizon compares: diff --git a/experiments/rain_ep_dillavou_c0.sh b/experiments/rain_ep_dillavou_c0.sh new file mode 100755 index 0000000..f3c088d --- /dev/null +++ b/experiments/rain_ep_dillavou_c0.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT=/home/yurenh2/sdil +AUTHOR=/scratch/yurenh2/energy-based-learning +PYTHON=/scratch/yurenh2/venvs/burstccn/bin/python +OUT="$ROOT/results/ep_bias/dillavou_c0" +mkdir -p "$OUT" +cd "$AUTHOR" + +run_cell() { + local gpu=$1 + local tag=$2 + local beta_policy=$3 + local mode=$4 + CUBLAS_WORKSPACE_CONFIG=:4096:8 CUDA_VISIBLE_DEVICES="$gpu" "$PYTHON" \ + "$ROOT/experiments/rain_ep_bias_train.py" \ + --author-root "$AUTHOR" --device cuda \ + --adapter dillavou --network-protocol comparative32 \ + --beta-policy "$beta_policy" --beta-value 0.25 \ + --mode "$mode" --bias-ratio 1 \ + --dillavou-drift-ratio 0 --predictor-rate 1 \ + --dillavou-calibration-steps 1 --neutral-cadence 0 \ + --epochs 10 --schedule-epochs 100 \ + --train-limit 60000 --test-limit 10000 --batch-size 128 \ + --training-iterations 15 --inference-iterations 60 \ + --evaluation-split test --data-seed 6200 \ + --seed 1988 --beta-seed 7100 --deterministic \ + --output "$OUT/$tag.json" > "$OUT/$tag.log" 2>&1 +} + +run_cell 0 pep_clean fixed_positive clean & +run_cell 1 pep_raw fixed_positive raw & +run_cell 2 pep_constant fixed_positive constant & +run_cell 3 pep_sdil fixed_positive innovation & +run_cell 4 random_clean random_sign clean & +run_cell 5 random_raw random_sign raw & +run_cell 6 centered_clean centered clean & +run_cell 7 centered_raw centered raw & +wait + +"$PYTHON" - "$OUT" <<'PY' +import json +from pathlib import Path +import sys + +root = Path(sys.argv[1]) +summary = {} +for path in sorted(root.glob("*.json")): + if path.name == "summary.json": + continue + report = json.loads(path.read_text()) + summary[path.stem] = { + "trajectory": [ + { + "epoch": row["epoch"], + "test_accuracy": row["test_accuracy"], + "test_cost": row["test_cost"], + "finite": row["finite"], + } + for row in report["metrics"] + ], + "final": report["final"], + } +(root / "summary.json").write_text(json.dumps(summary, indent=2) + "\n") +print(json.dumps(summary, indent=2)) +PY |
