Buckets:
| """Emit a compact, self-contained poster_embed.html from the real v2 numbers. | |
| Replaces the scaffold poster placeholder. No external hosts (the logbook Space | |
| is static with a strict CSP), pure inline CSS, ASCII only. | |
| """ | |
| import json | |
| import os | |
| ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
| V2 = os.path.join(ROOT, "results", "v2") | |
| a = json.load(open(os.path.join(V2, "analysis_v2.json"))) | |
| DS = ["moons-hard", "rings", "gauss-xor", "digits-3v8"] | |
| c1, c2, c3 = a["claims"]["claim1"], a["claims"]["claim2"], a["claims"]["claim3"] | |
| gx = a["datasets"]["gauss-xor"]["paired"] | |
| tot = sum(a["integrity"][d]["wall_time_sec"] for d in DS) / 60.0 | |
| rows = [] | |
| for ds in DS: | |
| acc = a["datasets"][ds]["acc"] | |
| p = a["datasets"][ds]["paired"] | |
| rows.append( | |
| f"<tr><td style='padding:4px 8px;border-bottom:1px solid #334155'>{ds}</td>" | |
| f"<td style='padding:4px 8px;border-bottom:1px solid #334155;text-align:right'>" | |
| f"{acc['ddsvm']['mean']*100:.2f} +/- {acc['ddsvm']['ci_hw']*100:.2f}</td>" | |
| f"<td style='padding:4px 8px;border-bottom:1px solid #334155;text-align:right'>" | |
| f"{p['ddsvm_vs_deep-ce']['mean']*100:+.2f}</td>" | |
| f"<td style='padding:4px 8px;border-bottom:1px solid #334155;text-align:right'>" | |
| f"{p['ddsvm_vs_deep-svm']['mean']*100:+.2f}</td>" | |
| f"<td style='padding:4px 8px;border-bottom:1px solid #334155;text-align:right'>" | |
| f"{p['ddsvm_vs_rbf-svm']['mean']*100:+.2f}</td></tr>") | |
| HTML = f"""<!-- poster_embed.html --> | |
| <div style="font-family:system-ui,-apple-system,Segoe UI,sans-serif;background:#0f172a;color:#e2e8f0;padding:22px;border-radius:12px;line-height:1.45"> | |
| <h2 style="color:#38bdf8;margin:0 0 4px">Reproduction: DDSVM - A Differentiable Framework for Deep Support Vector Machines with Iterative Geometry-Aware Optimization</h2> | |
| <p style="margin:0 0 14px;color:#94a3b8;font-size:.92em">ICML 2026 submission #34342 (OpenReview <code>l6MbbwsWUs</code>) · CPU-only reproduction · 4 datasets x 6 methods x 25 seeds · {tot:.1f} min total compute</p> | |
| <div style="display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px"> | |
| <div style="background:#1e293b;padding:12px;border-radius:8px;border-left:4px solid #fbbf24"> | |
| <div style="color:#fbbf24;font-weight:600;margin-bottom:4px">Claim 1 - alternating optimization</div> | |
| <div style="font-size:1.6em;font-weight:700">PARTIAL</div> | |
| <div style="font-size:.85em;color:#cbd5e1">{c1['n_pass']}/{c1['n_checks']} pre-stated checks. Three-phase block structure is exact (cross-phase parameter drift = 0.0 in all 1500 cycle-observations), but log-linear convergence holds on only 1/4 datasets.</div> | |
| </div> | |
| <div style="background:#1e293b;padding:12px;border-radius:8px;border-left:4px solid #fbbf24"> | |
| <div style="color:#fbbf24;font-weight:600;margin-bottom:4px">Claim 2 - push along the normal</div> | |
| <div style="font-size:1.6em;font-weight:700">PARTIAL</div> | |
| <div style="font-size:.85em;color:#cbd5e1">{c2['n_pass']}/{c2['n_checks']}. Margin grows and the support set shrinks on 4/4 datasets, but the geometry-aware push buys <b>no</b> test margin over a random-direction push (4/4 CIs straddle 0).</div> | |
| </div> | |
| <div style="background:#1e293b;padding:12px;border-radius:8px;border-left:4px solid #fbbf24"> | |
| <div style="color:#fbbf24;font-weight:600;margin-bottom:4px">Claim 3 - beats baselines</div> | |
| <div style="font-size:1.6em;font-weight:700">PARTIAL</div> | |
| <div style="font-size:.85em;color:#cbd5e1">Beats both deep baselines on {c3['n_datasets_both_baselines_beaten']}/4 datasets (gauss-xor: {gx['ddsvm_vs_deep-ce']['mean']*100:+.2f}pp vs CE, {gx['ddsvm_vs_deep-svm']['mean']*100:+.2f}pp vs deep-SVM). An off-the-shelf RBF SVM still wins there ({gx['ddsvm_vs_rbf-svm']['mean']*100:+.2f}pp).</div> | |
| </div> | |
| </div> | |
| <table style="width:100%;border-collapse:collapse;font-size:.86em;background:#1e293b;border-radius:8px;overflow:hidden"> | |
| <thead><tr style="background:#334155;color:#f1f5f9"> | |
| <th style="padding:6px 8px;text-align:left">dataset</th> | |
| <th style="padding:6px 8px;text-align:right">DDSVM acc % (95% CI)</th> | |
| <th style="padding:6px 8px;text-align:right">vs deep-CE (pp)</th> | |
| <th style="padding:6px 8px;text-align:right">vs deep-SVM (pp)</th> | |
| <th style="padding:6px 8px;text-align:right">vs RBF-SVM (pp)</th> | |
| </tr></thead> | |
| <tbody>{''.join(rows)}</tbody> | |
| </table> | |
| <div style="margin-top:12px;padding:10px 12px;background:#442626;border-radius:8px;border-left:4px solid #ef4444;font-size:.87em"> | |
| <b style="color:#fca5a5">Correction to v1 of this logbook.</b> v1 reported all 3 claims VERIFIED from a <b>single seed</b> on one easy moons dataset where every method scored an identical 99.75%. At 25 seeds across 4 datasets with paired tests and a random-push ablation, all three claims are <b>PARTIAL</b>. The mechanism is real and measurable; the advantage attributed to it is not. | |
| </div> | |
| </div> | |
| """ | |
| out = os.path.join(ROOT, "repro", "poster_embed.html") | |
| with open(out, "w", encoding="ascii", errors="strict", newline="\n") as f: | |
| f.write(HTML) | |
| print("wrote", out, len(HTML), "chars") | |
Xet Storage Details
- Size:
- 5.21 kB
- Xet hash:
- 62d755e2679d65884e83814cca82d26bf37cb591c3ff3f401fe986455f75a36e
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.