Skip to main content

math-validator

Validate that M2G-NET code (src/fusion.py, src/model.py, src/interaction.py) matches the documented math in docs/MATHEMATICAL_FORMULAS.md. Use whenever editing model architecture, loss, gate computation, calibration, or metrics.

معلومات المصدر

المستودع
Cuki2910/M2G-NET
آخر نشاط في المصدر
١٤ مايو ٢٠٢٦ في ١٧:٥٨
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٢
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
math-validator
description
Validate that M2G-NET code (src/fusion.py, src/model.py, src/interaction.py) matches the documented math in docs/MATHEMATICAL_FORMULAS.md. Use whenever editing model architecture, loss, gate computation, calibration, or metrics.
tags
["m2g-net","math","validation","fusion","model"]
version
1.0.0
user-invocable
true
allowed-tools
["Bash","Read","Grep"]
# Math Validator — M2G-NET Structural cross-check between `docs/MATHEMATICAL_FORMULAS.md` (the specification) and `src/` (the implementation). Produces a pass/fail report with specific mismatches. ## When to Use - After editing `src/fusion.py`, `src/model.py`, `src/interaction.py`, or `src/loss.py` - When adding or modifying a loss term, gate weight, or calibration step - When translating a new formula from the paper into code - Before submitting any commit that touches model math --- ## Validation Workflow ### Step 1 — Load the specification ``` Read("docs/MATHEMATICAL_FORMULAS.md") ``` Extract and list every named formula with its: - Symbol and domain (e.g., `g_k ∈ ℝ^V`, sparsemax output) - Tensor shape contract (e.g., `[batch, V]` → `[batch, K, V]`) - Key operations (softmax vs. sparsemax, temperature, masking) ### Step 2 — Map formulas to code | Formula section | File to check | |----------------|--------------| | §1 View Encoding `h_i = f_i(x_i)` | `src/views.py` | | §2 Site-Aware Representation | `src/views.py` (site embedding block) | | §3 Cross-Level Interaction | `src/interaction.py` | | §4 Gated Fusion (sparsemax, prior smoothing) | `src/fusion.py` — `ResidualGatedFusion`, `RegularizedTaskGate` | | §5 Multi-Task Loss + mask `m_k` | `src/loss.py` | | §6 Temperature Scaling / Calibration | `src/calibration.py` | | Metrics (ROC-AUC, ECE) | `src/metrics.py` | ### Step 3 — Run the automated check ```bash python scripts/verify_math.py ``` This script checks tensor shapes and key invariants. Review its output first before doing manual inspection. ### Step 4 — Manual spot-checks (for each changed formula) For each formula that was modified, verify: 1. **Shape contract**: Do tensor dimensions match the formula subscripts? - e.g., gate weights `g` should be `[batch, K, V]` if formula says `g_k ∈ ℝ^V` per task 2. **Operation identity**: Is the implementation using the right operation? - sparsemax ≠ softmax — check import and call site in `src/fusion.py` - Temperature scaling: is `τ` applied before or after the gate? 3. **Mask correctness**: Is `m_k^(n)` applied correctly in the loss? - Loss should be zeroed for unobserved labels, not included in mean 4. **Prior smoothing**: Gate prior `π` should blend uniformly, not collapse weights - Check `gate_prior_strength` parameter in `RegularizedTaskGate` 5. **Out-of-site mode**: When site ID is unknown, `h_rand = 0` (zeroed embedding) - Verify in `src/views.py` site-aware block ### Step 5 — Concrete numerical check (for critical changes) When changing loss, calibration, or gate computation, run a sanity check with known values: ```bash python -c " import torch from src.fusion import RegularizedTaskGate # Smoke test: uniform input should produce near-uniform gate weights gate = RegularizedTaskGate(num_views=5, num_tasks=4) x = torch.zeros(2, 128) # batch=2, hidden=128 g = gate(x) print('Gate shape:', g.shape) # expect [2, 4, 5] print('Gate sum per task:', g.sum(dim=-1)) # expect ~1.0 per task (sparsemax) " ``` --- ## Output Format After completing Steps 1–5, report as: ```markdown ## Math Validation Report **Formula sections checked**: [list] **Files inspected**: [list] **verify_math.py result**: PASS / FAIL (paste relevant output) ### Findings | Formula | Code location | Status | Note | |---------|--------------|--------|------| | Sparsemax gate g_k | src/fusion.py:L42 | ✅ PASS | Shape [B,K,V] correct | | Loss mask m_k | src/loss.py:L18 | ⚠️ WARN | Mean includes masked zeros | | Temperature τ | src/calibration.py:L31 | ✅ PASS | Applied post-logit | ### Action Required [List any FAIL or WARN items with specific fix] ``` --- ## Key Invariants to Never Violate | Invariant | Where enforced | |-----------|---------------| | sparsemax (not softmax) for gate weights | `src/fusion.py` | | Gate weights sum to ≤ 1 per task (sparse) | sparsemax property | | Loss masked by `m_k` — never average over unobserved | `src/loss.py` | | `h_rand = 0` for unknown sites | `src/views.py` | | Temperature `τ > 0` enforced (softplus or clamp) | `src/fusion.py` | | `docs/MATHEMATICAL_FORMULAS.md` is source of truth | All of `src/` |
عرض على GitHub