10 / 24 · Concept
im2col et multiplication matricielle
Pour H=W=4, C=1 et un noyau 3×3 sans remplissage, calculez les éléments d’entrée d’origine, P, K et les éléments des fenêtres développées.
Les leçons sont gratuites. Inscrivez-vous pour enregistrer vos progrès.
Réexprimer l’opération
im2col aplatit chaque fenêtre d’entrée en vecteur pour une multiplication matricielle. Nous plaçons une fenêtre par ligne. La matrice A contient P×K éléments, avec P=HoWo et K=CRS. Les poids aplatis forment les colonnes de B, de dimensions K×M. Le produit AB a les dimensions P×M. D’autres conventions placent les fenêtres en colonnes : définissez les axes plutôt que de les déduire du nom.
Vous pouvez matérialiser toute la matrice de fenêtres ou générer les fenêtres à la demande. Les deux peuvent produire les mêmes nombres avec des coûts de stockage et de bande passante différents. Posséder un moteur de multiplication matricielle n’impose pas d’écrire une matrice développée complète en mémoire externe.
Matrice détaillée
Pour [1, 2, 3;4, 5, 6;7, 8, 9] et des fenêtres 2×2, A a les lignes [1, 2, 4, 5], [2, 3, 5, 6], [4, 5, 7, 8] et [5, 6, 8, 9]. Le noyau [1, 2;3, 4] donne la colonne de poids [1, 2, 3, 4]. Les quatre produits scalaires sont 37, 47, 67, 77. Ainsi, 4×4 multiplié par 4×1 donne 4×1, remis en forme en une sortie 2×2.
L’entrée d’origine contient neuf éléments ; la matrice développée en contient seize. La valeur centrale cinq apparaît quatre fois, tandis que la valeur de coin un apparaît une fois. La réutilisation spatiale devient une duplication dans une représentation matérialisée. Un vecteur de poids est réutilisé pour les quatre fenêtres. Calculez P×K et comparez à C×H×W avant d’attribuer le stockage. Une région de sortie plus grande peut rendre la duplication importante.
Pour plusieurs canaux, aplatissez fenêtres et poids dans le même ordre c, r, s. Une fenêtre 1×1 à deux canaux est [x0, x1] ; inverser seulement les canaux de poids change le résultat. Commencez par des valeurs de canaux asymétriques. La convolution groupée forme des vecteurs de groupes distincts au lieu d’inclure indistinctement tous les canaux d’entrée.
L’accord avec un modèle direct vérifie les valeurs arithmétiques, et non les transferts physiques en mémoire ou le fonctionnement simultané des PE. Le chapitre suivant génère des fenêtres équivalentes depuis un flux ; un découpage ultérieur évite de stocker tout le tenseur développé. Enregistrez taille matricielle intermédiaire, duplication et valeurs de sortie pour garder visibles les coûts de répartition.
Essayez vous-même
Pour H=W=4, C=1 et un noyau 3×3 sans remplissage, calculez les éléments d’entrée d’origine, P, K et les éléments des fenêtres développées.
Lire l’explication
L’entrée contient seize éléments. La sortie est 2×2, donc P=4 et K=9. Une matrice de fenêtres complète contient 36 éléments. Des fenêtres à la demande peuvent éviter de stocker les 36.