algorise's picture
download
raw
5.21 kB
"""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>) &middot; CPU-only reproduction &middot; 4 datasets x 6 methods x 25 seeds &middot; {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.