[ИАД, осень 2025] Методы глубокого обучения. Семинар 3: CNN Implementation

[ИАД, осень 2025] Методы глубокого обучения. Семинар 3: CNN Implementation

🎙 Machine Learning – Intelligent Systems 👥 8K 📅 6 octobre 2025 ⏱ 72 min 👁 143 📄 tutoriel 🧭 2026-08-16
Disponible en : Français (actuel) English

Mots-clés

convolutionimplémentationstridesNumPyPyTorch

Résumé

Ce séminaire de la série « Méthodes de deep learning » se concentre sur l’implémentation pratique de la convolution, en partant d’une version naïve à base de boucles imbriquées pour aboutir à une implémentation efficace comparable à celle de PyTorch. Le formateur commence par rappeler les formats de tenseurs (NHWC vs NCHW) et les dimensions des noyaux de convolution. Il détaille ensuite la formule de convolution en 2D puis en 4D, avant de présenter une première implémentation avec sept boucles, qui s’avère plus de 2000 fois plus lente que la référence PyTorch. Pour améliorer les performances, il introduit la représentation de la convolution comme une multiplication matricielle, en exploitant le fait qu’une convolution 1x1 est équivalente à une couche linéaire. La deuxième implémentation, qui effectue une multiplication matricielle pour chaque position du noyau, atteint une vitesse environ quatre fois inférieure à PyTorch. Une partie importante est consacrée à la notion de strides en mémoire (row-major vs column-major), à leur manipulation via les fonctions de NumPy, et à leurs avantages (slicing, transposition, broadcasting sans copie) et inconvénients (ralentissement des opérations vectorielles). Enfin, le formateur présente la fonction as_strided pour extraire efficacement les patches, et introduit la méthode im2col qui permet de rassembler tous les calculs en une seule multiplication matricielle, se rapprochant ainsi de l’implémentation optimale de PyTorch.

217 mots

Évaluation critique

Valeur des informations & solidité de l’argumentation

La valeur des informations est élevée : le contenu est très technique, précis, et directement applicable. L’argumentation est solide, car chaque implémentation est justifiée par des considérations théoriques (formules) et pratiques (mesures de performance). Les explications sur les strides et la gestion mémoire sont claires et illustrées par des exemples concrets. La progression pédagogique est bien construite, passant d’une approche naïve à une approche optimisée, ce qui permet de comprendre les enjeux de performance. Les comparaisons chiffrées (facteur de ralentissement, temps d’exécution) renforcent la crédibilité du discours.

Rigueur scientifique, qualité des sources, adéquation du titre

La rigueur scientifique est bonne : les formules sont correctement dérivées, les implémentations sont vérifiées par des assertions et comparées à une référence (PyTorch). Les sources sont implicites (cours, documentation NumPy/PyTorch), mais le contenu est reproductible. L’adéquation titre/contenu est parfaite : le titre annonce un séminaire sur l’implémentation de CNN, et c’est exactement ce qui est traité. Aucune source externe n’est citée explicitement, mais les références à la documentation de NumPy et PyTorch sont implicites et suffisantes pour un public averti.

183 mots

Adéquation titre / contenu

Le titre annonce un séminaire sur l'implémentation de CNN, ce qui correspond exactement au contenu : implémentation de la convolution, gestion des strides, comparaison de performances.

Qualité & fiabilité

8/10

Contenu technique dense et précis, basé sur des implémentations concrètes en Python/NumPy/PyTorch. Les explications sont rigoureuses, les comparaisons de performance sont chiffrées. La démarche pédagogique est progressive et vérifiable. Quelques imprécisions mineures (facteur de ralentissement annoncé puis corrigé) mais l'ensemble est fiable.

Moments clés

Sources citées

  • Documentation NumPy — Référence pour les fonctions numpy.lib.stride_tricks.as_strided, numpy.ndarray.strides, numpy.ascontiguousarray, etc.
  • Documentation PyTorch — Référence pour les fonctions de convolution et les formats de tenseurs.

Sources concordantes

  • Documentation NumPy — Les explications sur les strides et as_strided sont cohérentes avec la documentation officielle.
  • Documentation PyTorch — Les formats de tenseurs et les fonctions de convolution sont conformes à la documentation.

Apport & nouveautés

L’apport principal de cette vidéo est de fournir une progression pédagogique claire sur l’implémentation de la convolution, en partant d’une version naïve jusqu’à une version optimisée, tout en expliquant les concepts sous-jacents comme les strides et la gestion mémoire. La comparaison systématique avec PyTorch permet de quantifier les gains de performance. La vidéo est utile pour les étudiants ou développeurs souhaitant comprendre les mécanismes internes des frameworks de deep learning.

Pour aller plus loin :

  • im2col — Technique clé pour vectoriser la convolution, directement liée à la méthode présentée.
  • Convolutional neural network — Article de référence sur les CNN, contexte général.
  • NumPy strides — Documentation officielle sur les strides, concept central de la vidéo.

114 mots

Profil radar

Le profil radar montre un niveau technique très élevé (9/10), une bonne quantité et qualité d'information (8/10), et une fiabilité globale solide (8/10). La vidéo est donc très technique et dense, avec une fiabilité correcte, mais le niveau technique élevé peut limiter son accessibilité.

Fiabilité 8/10