Altifigence Academy

9 / 24 · Concept

Référence de convolution directe

Pour les entrées [2, 3], les poids [4, −1] et le biais un, quel résultat incorrect obtient-on si le biais est ajouté à chaque itération de canal d’entrée ?

Préférer une référence inspectable

Un modèle de référence privilégie un contrat visible à la vitesse. Parcourez canal de sortie, ligne de sortie et colonne de sortie, puis réduisez canal d’entrée, ligne et colonne du noyau. Calculez chaque coordonnée d’entrée et fournissez zéro hors des limites. Cela révèle la première sortie incorrecte et le terme exact qui diverge. Le modèle n’a pas besoin de reproduire l’ordre optimisé des boucles matérielles.

y[m,h,w]=b[m]+∑c∑r∑sx[c,hSh−Pt+rDh,wSw−Pl+sDw]w[m,c,r,s]y[m,h,w]=b[m]+\sum_c\sum_r\sum_s x[c,hS_h-P_t+rD_h,wS_w-P_l+sD_w]w[m,c,r,s]

Initialisez l’accumulateur à b[m] une seule fois par sortie. L’ajouter dans la réduction répéterait le biais. Dans le modèle entier, x et w sont des codes centrés et le biais utilise l’échelle du produit.

Exemple multicanal détaillé

Utilisez deux canaux d’entrée 1×1 contenant deux et trois. Le canal de sortie zéro a les poids [4, −1] et le biais un, donnant 1+8−3=6. Le canal de sortie un a les poids [−2, 5] et le biais −1, donnant −1−4+15=10. Un accumulateur partagé doit démarrer la deuxième sortie indépendamment au lieu de conserver le premier résultat.

Pour l’entrée [1, 2, 3;4, 5, 6;7, 8, 9] et le noyau [1, 2;3, 4], attendez [37, 47;67, 77]. Les premiers produits consignés sont 1, 4, 12, 20. Les suivants sont 2, 6, 15, 24. Inspectez une position calculée à la main ; les valeurs finales seules peuvent masquer des erreurs qui se compensent.

Comparez le modèle direct à un modèle de fenêtres et produits scalaires structuré séparément. Partager la même routine d’adressage dans les deux peut partager le même défaut. Combinez une structure indépendante à des jeux manuels. Gardez les graines aléatoires reproductibles et conservez un tenseur défaillant. Comparez l’accumulateur non converti et le code de sortie final pour localiser les erreurs numériques.

Notre model.mjs accepte X[C][H][W] et W[M][C/G][R][S], avec un lot implicite. Il vérifie les tenseurs rectangulaires, la compatibilité des canaux et les groupes. Il n’importe pas de modèles de frameworks. Utilisez des valeurs distinctes, des négatifs et des poids asymétriques plutôt qu’un jeu entièrement nul. Comparez les conventions à Conv d’ONNX tout en documentant les limites de ce modèle pédagogique.

Essayez vous-même

Pour les entrées [2, 3], les poids [4, −1] et le biais un, quel résultat incorrect obtient-on si le biais est ajouté à chaque itération de canal d’entrée ?

Lire l’explication

Le résultat correct est 1+8−3=6. Répéter le biais deux fois donne 8−3+2=7. Initialisez le biais hors de la réduction des canaux.

Votre choix s’applique à ce navigateur. Modifiez-le à tout moment en bas de page.