summaryrefslogtreecommitdiff
path: root/experiments/coupled_ladder_scaling.py
diff options
context:
space:
mode:
authorYurenHao0426 <Blackhao0426@gmail.com>2026-08-29 17:42:16 -0500
committerYurenHao0426 <Blackhao0426@gmail.com>2026-08-29 17:42:16 -0500
commit5d5afff674c898f345fc57119cbc2f99fa7fb0bd (patch)
tree526213e7aa1982790e52d673b0263614527dba79 /experiments/coupled_ladder_scaling.py
parentcaa30af8f8191f48bae08f3f1074021cc8e4d81e (diff)
feat: add stable-target and physical-exposure metrics
Diffstat (limited to 'experiments/coupled_ladder_scaling.py')
-rw-r--r--experiments/coupled_ladder_scaling.py34
1 files changed, 28 insertions, 6 deletions
diff --git a/experiments/coupled_ladder_scaling.py b/experiments/coupled_ladder_scaling.py
index ce3509a..7c50e2d 100644
--- a/experiments/coupled_ladder_scaling.py
+++ b/experiments/coupled_ladder_scaling.py
@@ -160,10 +160,16 @@ def run_job(job: dict) -> dict:
"failure_message": str(error),
"classification_error": 1.0,
"hinge_loss_v2": None,
- "reached_zero_error": False,
- "restricted_epochs_to_zero_error": job["epochs"],
- "restricted_updates_to_zero_error": (
+ "reached_stable_zero_error": False,
+ "restricted_epochs_to_stable_zero_error": job["epochs"],
+ "restricted_updates_to_stable_zero_error": (
job["epochs"] * len(dataset.labels_v)),
+ "restricted_edge_updates_to_stable_zero_error": (
+ job["epochs"] * len(dataset.labels_v)
+ * circuit.edge_count),
+ "restricted_learning_time_to_stable_zero_seconds": (
+ job["epochs"] * len(dataset.labels_v)
+ * job["learning_time_seconds"]),
"classification_error_auc": 1.0,
"local_updates": None,
"neutral_observations": None,
@@ -201,10 +207,27 @@ def summarize(records: list[dict], methods: tuple[str, ...]) -> dict:
"mean_classification_error_auc": float(np.mean([
value["classification_error_auc"] for value in values
])),
- "mean_restricted_epochs_to_zero_error": float(np.mean([
- value["restricted_epochs_to_zero_error"]
+ "stable_zero_error_fraction": float(np.mean([
+ value["reached_stable_zero_error"] for value in values
+ ])),
+ "mean_restricted_epochs_to_stable_zero_error": float(np.mean([
+ value["restricted_epochs_to_stable_zero_error"]
for value in values
])),
+ "mean_restricted_edge_updates_to_stable_zero_error": (
+ float(np.mean([
+ value[
+ "restricted_edge_updates_to_stable_zero_error"
+ ] for value in values
+ ]))
+ ),
+ "mean_restricted_learning_time_to_stable_zero_seconds": (
+ float(np.mean([
+ value[
+ "restricted_learning_time_to_stable_zero_seconds"
+ ] for value in values
+ ]))
+ ),
"median_wall_seconds": float(np.median([
value["wall_seconds"] for value in values
])),
@@ -338,4 +361,3 @@ def main() -> None:
if __name__ == "__main__":
main()
-