Repository navigation
feat(ml,#12422,#4.1): conv NumPy from scratch + torch allclose, parité epsilon machine - #14006
Conversation
…é epsilon machine Cycle c.830, post user GO COMPLET (msg-20260901T074251-vfrtwn ai-01 dispatch). Ouvre la série 04-Vision avec le premier notebook de la trilogie annoncée par l'Epic #12422 : le neurone convolutif from scratch. Discipline 03-DeepLearning (from scratch PUIS framework, parité epsilon machine). - conv2d NumPy pur (single + multi-canal) avec gradient vérifié par différence finie (max abs diff 1e-10) - parité NumPy ↔ torch.nn.Conv2d : float32 1,91e-06, float64 5,33e-15 - pooling 2x2 + invariance par translation mesurée pixel-à-pixel - application Sobel/Gaussien sur image réelle (cat ImageNet) - 3 exercices : Laplacien / empilement 8 filtres aléatoires / invariance translation quantitative 36 cellules (26 md / 10 code), Papermill 36/36 SUCCESS, 0 erreur. C.1 OK (3 exos, jamais raise NotImplementedError). C.2 OK (execution_count + outputs cohérents). Refs #12422 (Epic parente, sous-tâche 4.1 sur 3) Refs #13947 (escalade G-VAR-3 OVERRIDE sustained c.829, drain prévu après merge 4.1) Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
…README The 04-Vision/README.md table referenced 4.2-ConvNet-Profonde-Pourquoi- Residuelles.ipynb and 4.3-Transfer-Learning-ResNet.ipynb as if they already existed, but they are PR-suivantes (c.830 feuille de route). check-links FAILURE (run 99808182291) caught the broken links. Fix (Tell c.820 NEW durable): replace forward links with textual mentions flagged '(PR suivante, voir feuille de route)'. No perimeter change: 4.1 stays linked, 4.2/4.3 are listed in the table without clickable targets until their PRs land. Diff: -2/-2 (purely textual, no scope change). Grain: LIGHT/repair -- lane myia-po-2026:CoursIA-2 -- prev: DEEP/notebook-python #14023 c.833
check-navlinks FAILURE (run 33497315608) detected the forward link [4.2 (ConvNet profonde : pourquoi les résiduelles)](4.2-...) in cell 0 markdown of 4.1-Conv-NumPy-Torch-Allclose.ipynb. Same fix as c.834 README: replace clickable forward link with text flag "PR suivante, voir feuille de route" until 4.2/4.3 PRs land. Tell c.834 transferable: check-links (README) + check-navlinks (notebooks) both read clickable links as assertions of scope. Both must be sanitized when a PR is the first of a new sub-series. Diff: 1 file, +2/-2 (purely textual cell source edit, 0 scope change, outputs unchanged - C.2 respected).
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Grain: DEEP/notebook-python — lane myia-po-2026:CoursIA-2 — prev: MED/guard #13947
Tell c.830 — 4.1 / 3 notebooks Vision 04 (EPIC #12422, GO COMPLET user)
User-blocker #12422 levé en session directe 2026-09-01 (msg-20260901T074251-vfrtwn ai-01 dispatch) : GO COMPLET sur la série Vision 04, pas le GO réduit. 3 PRs/notebooks à livrer, ce cycle = 4.1, suite 4.2 (résiduelles) + 4.3 (transfer learning ResNet) sur les cycles suivants.
Claim posé c.830 avec paths corrigés (
MyIA.AI.Notebooks/ML/DataScienceWithAgents/04-Vision/*, pasGenAI/Image/*comme mon ancien claim c.535 RELEASED pour incompatibilité) — j'avais auto-RELEASED c.535 sur constat paths incompatibles, merci à ai-01 pour la correction dans le dispatch.Summary
Ouvre la série 04-Vision (
MyIA.AI.Notebooks/ML/DataScienceWithAgents/04-Vision/) avec le premier notebook de la trilogie annoncée par l'Epic #12422 : le neurone convolutif from scratch. Implémentation NumPy pur (single + multi-canal) avec gradient vérifié par différence finie, parité epsilon machine avectorch.nn.Conv2d, et démonstration visuelle de l'invariance par translation sur image réelle (Sobel, Gaussien).Trois primitives installées, qui serviront dans 4.2 (empilement profond) et 4.3 (transfer learning) :
conv2d_validNumPy(C_in, H, W) → (C_out, H-kH+1, W-kW+1)avec sa rétropropagationValidation (rule H.1 — preuve réelle)
Exécution Papermill 36/36 cellules, 0 erreur :
Y_np[0,0] = -0.1234..., vérification directe écart = 0,00e+00 (formule exacte)np.array_equal(Y_np, Y_vec) = True, max abs diff = 0,00e+00torch.nn.Conv2dvalidate_pr_notebooks.pyPASS (à rejouer post-push).Scope (atomique)
4.1-Conv-NumPy-Torch-Allclose.ipynb04-Vision/README.mdAucune modification à
03-DeepLearning/,02-ML-Cours/, ou autre série. Aucun marqueur CATALOG-STATUS touché (catalog-pr-hygiene HARD 1). 2 fichiers, ~3000 lignes max (notebooks), domaine unique (Vision). Split OK (Tell c.692-L1 strict sustained).C.1 — exercices stubs (sans
raise NotImplementedError)3 exercices (Tell c.692-L1 strict sustained ≥ 3) :
K_lap = [[0,1,0],[1,-4,1],[0,1,0]], application sur image, comparaison visuelle Sobel vs Laplacien, parité torch.(8, 3, 3), application + visualisation grille 2×4, commentaire sur spécialisation.[0..5], mesure position max sans/avec pooling, graphe, commentaire rayon d'invariance.Tous trois :
print("A completer")(jamaisraise NotImplementedError), structureTODO etudiantconservée. Notebook s'exécute end-to-end même exercices non complétés.C.2 — outputs commit-réalité
Toutes les cellules code portent
execution_countEToutputscohérents. Papermill SUCCESS 36/36. 3 PNG sauvés localement (/tmp/sobel_invariance.png,/tmp/filtres_appliques.png, etc.) — un seul est conservé en base64 dans le notebook (Sobel).Compliance
execution_count != nullpartout,outputs != [], 0raise NotImplementedError.c830_pr_body.md), pas dans le worktree.narrowcount = 0 (terme banni user 2026-08-31T22h+).f12ffe4d7,37 * * * *actif.gh authvérifié.msg-20260901T083714-l8ci02). PR fix(ci,#13874): forme universelle de la garde fork -- couvre pull_request_target #13947 escalade G-VAR-3 OVERRIDE postée c.829 — sustained, attente décision ai-01.gh auth switchautorisé mais non utilisé ce cycle.Suite
Cycles à venir :
Closes Epic #12422 (sous-tâche 4.1 sur 3 —
See #12422pour la part Epic-wide, à fermer au merge de 4.3).Refs #12422 (Epic parente)
Refs #13947 (escalade G-VAR-3 OVERRIDE sustained c.829 — drain prévu après merge 4.1)