diff options
| -rw-r--r-- | experiments/coupled_ladder_scaling.py | 22 | ||||
| -rw-r--r-- | results/coupled_ladder/p0_overclamp_selector.json | 62 |
2 files changed, 80 insertions, 4 deletions
diff --git a/experiments/coupled_ladder_scaling.py b/experiments/coupled_ladder_scaling.py index bb6f090..680b855 100644 --- a/experiments/coupled_ladder_scaling.py +++ b/experiments/coupled_ladder_scaling.py @@ -267,6 +267,11 @@ def parse_args() -> argparse.Namespace: parser.add_argument("--calibration-observations", type=int, default=16) parser.add_argument( "--overclamp-time-seconds-per-v", type=float, default=0.0025) + parser.add_argument( + "--overclamp-times", + default=None, + help="optional side:time mapping that overrides the scalar value", + ) parser.add_argument("--gain-standard-deviation", type=float, default=0.01) parser.add_argument( "--twin-mismatch-standard-deviation-v", type=float, default=0.001) @@ -288,6 +293,17 @@ def main() -> None: if missing_times: raise ValueError( f"learning times are missing sizes {sorted(missing_times)}") + if args.overclamp_times is None: + overclamp_times = { + side: args.overclamp_time_seconds_per_v for side in sizes + } + else: + overclamp_times = parse_mapping(args.overclamp_times, float) + missing_overclamp_times = set(sizes) - set(overclamp_times) + if missing_overclamp_times: + raise ValueError( + "overclamp times are missing sizes " + f"{sorted(missing_overclamp_times)}") methods = tuple(args.methods.split(",")) unknown_methods = set(methods) - set(METHODS) if unknown_methods: @@ -305,8 +321,7 @@ def main() -> None: "record_every": args.record_every, "learning_time_seconds": learning_times[side], "calibration_observations": args.calibration_observations, - "overclamp_time_seconds_per_v": ( - args.overclamp_time_seconds_per_v), + "overclamp_time_seconds_per_v": overclamp_times[side], "gain_standard_deviation": args.gain_standard_deviation, "twin_mismatch_standard_deviation_v": ( args.twin_mismatch_standard_deviation_v), @@ -348,8 +363,7 @@ def main() -> None: "record_every": args.record_every, "learning_time_seconds_by_side": learning_times, "calibration_observations": args.calibration_observations, - "overclamp_time_seconds_per_v": ( - args.overclamp_time_seconds_per_v), + "overclamp_time_seconds_per_v_by_side": overclamp_times, "component_imperfection": { "gain_standard_deviation": args.gain_standard_deviation, "twin_mismatch_standard_deviation_v": ( diff --git a/results/coupled_ladder/p0_overclamp_selector.json b/results/coupled_ladder/p0_overclamp_selector.json new file mode 100644 index 0000000..aa59a18 --- /dev/null +++ b/results/coupled_ladder/p0_overclamp_selector.json @@ -0,0 +1,62 @@ +{ + "analysis": "digital_coupled_ladder_clean_only_overclamp_selector", + "confirmatory": false, + "selection_information": "ideal overclamped coupled-learning endpoints only", + "task_panel": { + "input_diameters": 5, + "label_rotations_per_diameter": 1, + "tasks": 5 + }, + "candidate_overclamp_time_seconds_per_v": [ + 0.0025, + 0.025, + 0.25, + 2.5 + ], + "criterion": [ + "lowest mean final classification error", + "lowest mean classification-error learning-curve area as the tie break" + ], + "selected_overclamp_time_seconds_per_v_by_side": { + "4": 0.25, + "8": 0.25, + "12": 0.25, + "16": 2.5, + "24": 2.5, + "32": 2.5 + }, + "selected_clean_development_endpoints": { + "4": { + "mean_final_classification_error": 0.025, + "mean_classification_error_auc": 0.056874999999999995 + }, + "8": { + "mean_final_classification_error": 0.0, + "mean_classification_error_auc": 0.04666666666666666 + }, + "12": { + "mean_final_classification_error": 0.0, + "mean_classification_error_auc": 0.030208333333333337 + }, + "16": { + "mean_final_classification_error": 0.0, + "mean_classification_error_auc": 0.036250000000000004 + }, + "24": { + "mean_final_classification_error": 0.0, + "mean_classification_error_auc": 0.034999999999999996 + }, + "32": { + "mean_final_classification_error": 0.0, + "mean_classification_error_auc": 0.04958333333333333 + } + }, + "sources": [ + "results/coupled_ladder/p1_bias_baseline_pilot.json", + "results/coupled_ladder/p0_overclamp_clean_t2p5e-2.json", + "results/coupled_ladder/p0_overclamp_clean_t2p5e-1.json", + "results/coupled_ladder/p0_overclamp_clean_t2p5.json", + "results/coupled_ladder/p0_overclamp_clean_small_t2p5.json" + ], + "freeze": "Biased overclamp conditions use this mapping without further time-constant selection." +} |
