EfficientNet's MBConv1 and head backward graphs #
planning/archive/mnv4_verified.md §8e swept the repo for certified batched forwards with no
BACKWARD graph. Four were EfficientNet's; two turned out to be naming artifacts and two were
genuine (the table below). This file closes the two
genuine holes against the named forwards: mbNoExpBackBatchedGraph_faithful (MBConv1,
projB ∘ seB ∘ dwbsB — no expand stage, so nothing had composed it) and
headBackBatchedGraph_faithful (dense ∘ GAP ∘ cbsB).
Every stage here is GLOBAL #
EfficientNet is swish/sigmoid throughout, both smooth, so every layer below has ok = True: the
backward graph denotes the VJP at every input, no side conditions. Contrast MNv4/R34/R50, whose
relu kinks force _at.
⭐ Probing the named forwards found the real situation, which is not what §8e assumed:
| forward | verdict |
|---|---|
mbStridedFwdB | ⭐ never a hole — mbDownBodyB_has_vjp is definitionally the same object (rfl), and it already has a certified graph. A duplicate NAME, not a missing proof. |
mbExpFwdB | same shape as mbBodyB_has_vjp, which bakes in ic = oc = c; tied where the types meet |
mbNoExpFwdB | genuine — nothing composed projB ∘ seB ∘ dwbsB |
headFwdB | genuine — nothing composed dense ∘ GAP ∘ cbsB |
▶ So §8e over-counted: a sweep keyed on names cannot see that two names denote one object. The lesson is the same one §4c(a) taught about the relu6 detector, in the opposite direction — there a detector could not fire, here one fires spuriously. Both are measurement bugs, and only re-running the measurement after the fix catches either.
mbNoExpFwdB's backward graph — genuinely new: MBConv1 has no expand stage, so
dwbsB⁻¹ ∘ seB⁻¹ ∘ projB⁻¹ had never been chained.
Equations
- One or more equations did not get rendered due to their size.
Instances For
headFwdB's backward graph — genuinely new: cbsB⁻¹ ∘ GAP⁻¹ ∘ dense⁻¹. The EfficientNet
peer of MNv4's head, and the last stage-level hole in the repo.
Equations
- Proofs.StableHLO.headBackBatchedGraph Wh bh εh γh βh Wfc _bfc x e = Proofs.StableHLO.cbsBackBatchedGraph Wh bh εh γh βh x (Proofs.StableHLO.SHlo.denseRowBack "%Wfc" Wfc e).gapBackBatched