summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYurenHao0426 <Blackhao0426@gmail.com>2026-08-07 13:05:23 -0500
committerYurenHao0426 <Blackhao0426@gmail.com>2026-08-07 13:05:23 -0500
commit0be7f2d8b71343084da3cd4a97c714b7f74ffc3c (patch)
treea4babfd2edb4c29072c563446df8dd2c98c59d3a
parent61d838358b99c104e74c313a8289a774b54025d7 (diff)
exp: freeze full-data Dillavou trajectory check
-rw-r--r--RAIN_EP_DILLAVOU_MATRIX.md15
-rwxr-xr-xexperiments/rain_ep_dillavou_c0.sh67
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