Avec l'avènement du réseau neuronal à convolution (CNN), le domaine de la reconnaissance d'image a fait de grands progrès. A partir d'AlexNet, divers réseaux tels que VGGNet et GoogLeNet ont été proposés et ont montré leurs effets. Bien qu'il s'agisse d'un tel CNN, l'inconvénient est que cela prend beaucoup de temps car l'opération de convolution est lourde. Son poids est tel que la couche entièrement connectée peut être complètement ignorée, et si le processus de convolution peut être accéléré, le temps d'apprentissage peut être considérablement réduit. Par conséquent, ce qui attire l'attention est la relation ** convolution dans la région spatiale = produit d'élément dans l'espace fréquentiel **. Dans cet article, j'expliquerai la théorie de base de la convolution dans la gamme de fréquences. Je n'ai trouvé aucun article en japonais, alors je fais de mon mieux pour les lire dans les journaux. Veuillez noter qu'il peut y avoir des erreurs et des malentendus.
Les papiers traités dans cet article sont
est.
Afin de bien comprendre la convolution dans la région fréquentielle, reconsidérons d'abord la convolution dans la région spatiale. Il existe deux types de traitement par convolution, appelés respectivement ** convolution linéaire (convolution droite) ** et ** convolution circulaire (convolution circulaire) **. Tout d'abord, je vais expliquer ces deux.
Je présenterai les variables qui seront utilisées par la suite en premier.
La convolution linéaire est le processus de convolution illustré dans la figure ci-dessous. De cette façon, on a l'impression de partir du point où le bord droit du filtre et le bord gauche de l'entrée se chevauchent, et de se terminer lors du passage. Je ne le posterai pas car je n'ai pas besoin d'une formule mathématique, mais comprenez bien que cela fonctionne comme ça. Et notez que cette convolution linéaire ** l'entrée n'est pas une fonction périodique **.
En outre, l'expression relationnelle suivante est valable pour la taille.
O = I + F - 1
Dans GIF, $ I = 9 $ et $ F = 3 $, donc la taille de sortie est $ O = 9 + 3-1 = 11 $.
La convolution circulaire est le processus de convolution illustré dans la figure ci-dessous. C'est comme partir du point où le bord gauche du filtre et le bord gauche de l'entrée se chevauchent, et se terminer lorsque le bord droit du filtre et le bord droit de l'entrée se chevauchent. C'est exactement la différence avec la convolution linéaire, auquel cas l'entrée ** doit être une fonction périodique **. Je pense qu'il est normal de comprendre que l'entrée n'est pas nécessaire car l'entrée est une fonction périodique pour chacune des deux extrémités représentées par le GIF de convolution linéaire (je pense que c'est strictement différent, mais la rigueur n'est pas particulièrement requise. ).
En outre, l'expression relationnelle suivante est valable pour la taille.
O = I - F + 1
Dans GIF, $ I = 9 $ et $ F = 3 $, donc la taille de sortie est $ O = 9 --3 + 1 = 7 $.
Pour que les convolutions linéaires et circulaires soient égales, les deux extrémités de l'entrée doivent être remplies de zéro de sorte que $ O = I + F -1 $. Vous pouvez voir que le résultat de sortie est égal à la convolution linéaire.
Maintenant, quelle est l'opération de convolution dans CNN? Pensez d'un point de vue d'entrée.
Les données entrées dans le CNN sont généralement une image, et très probablement cette image est une photo. Cela signifie que l'on peut s'attendre à ce que l'image ne présente pas de périodicité à moins que l'image ne soit reconnue comme un motif. Cela signifie que l'entrée est apériodique, donc ** CNN doit faire une convolution linéaire **.
Mais il est encore trop tôt pour conclure cela. Veuillez consulter la figure ci-dessous. Cela montre comment le CNN est plié. Comme vous pouvez le voir, le filtre ne passe pas par l'image d'entrée, donc ** dans cette figure, nous faisons une convolution circulaire **. Cela signifie que ** les informations ne peuvent pas être obtenues correctement ** à partir de l'opération de convolution. Cependant, en supposant que ** les images d'entrée sont périodiquement disposées verticalement et horizontalement (chevauchant $ F -1 $) **, cette convolution peut être considérée comme correcte.
J'aimerais dire: "Lequel est-ce après tout?", Mais j'ai encore quelque chose à penser. C'est du ** padding **, qui est une technologie essentielle pour CNN. Il n'y en a pas assez dans cette figure, mais ** la convolution circulaire peut être égale à la convolution linéaire ** si vous en complétez autant que vous en avez besoin. Ensuite, si le traitement appelé remplissage est appliqué correctement à l'image d'entrée, une convolution linéaire peut être effectuée, et ** les informations peuvent être obtenues correctement à partir de l'opération de convolution **. Dans article que j'ai écrit avant, le rôle du rembourrage est de "maintenir la taille" et "d'obtenir toutes les informations sur le bord". C'est tout. (Au moment d'écrire ces lignes, je n'y pensais pas autant que la rosée, mais lol)
Maintenant, ce processus de remplissage rend la discussion encore plus compliquée. Compte tenu de la foulée propre au pliage dans CNN, encore plus ... Ce remplissage est souvent utilisé ** pour empêcher (ou réduire) la dégradation de la taille de l'image de sortie due à la convolution dans CNN **. Par conséquent, la largeur du rembourrage augmente ou diminue en fonction de la foulée, donc je ne veux pas du tout faire de la convolution circulaire une convolution linéaire. Ensuite, la largeur du rembourrage sera excessive ou insuffisante. Il n'y a pas de problème si la largeur de remplissage est grande, mais si elle est petite, la conversion en convolution circulaire $ \ rightarrow $ convolution linéaire ne sera pas effectuée correctement.
Après tout, la conclusion est ** "La convolution dans CNN est entre la convolution linéaire / circulaire" **. Il semble que "je tire beaucoup et la conclusion est ambiguë", mais cela ne peut pas être aidé parce que je ne peux que le dire. Quand il s'agit de discussions rigoureuses en théorie, c'est en fait différent des hypothèses.
Telle est la prémisse. De là, nous allons enfin passer à la théorie de la gamme de fréquences. Au fait, si vous vous demandez "Quelle est la rigueur mathématique?", Veuillez consulter [Annexe](#Strict convolution et cnn).
À propos, l'histoire à ce jour est un résumé des résultats de mes recherches ici et là, ce que j'ai jugé nécessaire en lisant l'article. C'est toujours doux, mais je pense que ce n'est pas grave si vous avez cela en tête. Il est maintenant temps d'entrer dans le contenu de l'article. La rétropropagation dans le papier 2.1 décrit uniquement la partie qui compare le CNN dans la région spatiale avec le CNN dans la région de fréquence, donc je vais le couper et lire à partir de 2.2. À propos, l'article n'est pas traduit en japonais mais traduit et ajouté. Les chiffres de cette section sont tirés du document.
Il est bien connu que l'opération de convolution dans le domaine spatial est équivalente au produit d'élément dans le domaine de Fourier (fréquence) **. Par conséquent, l'opération de convolution dans la région spatiale utilise le convertisseur de Fourier $ \ mathcal {F} $ et son opération inverse $ \ mathcal {F} ^ {-1} $.
f * g = \mathcal{F}^{-1}\big(\mathcal{F}_f(k) \odot \mathcal{F}_g(k)\big)
Peut être exprimé comme. Cependant, le symbole $ * $ représente l'opération de convolution dans la région spatiale, et le symbole $ \ otimes $ représente le produit d'élément dans l'opération de matrice. Il convient de noter qu'en raison de la nature du produit de l'élément, ** $ f et g $ doivent être de taille proche (ou plutôt de taille égale) ** pour effectuer les opérations d'équation ci-dessus. Cependant, en général, l'entrée (taille $ I_h \ fois I_w $) et le filtre (taille $ F_h \ fois F_w $) sont des tailles complètement différentes. Par conséquent, lors de sa mise en œuvre, un remplissage est nécessaire pour correspondre à la taille de l'entrée et du filtre. (Peut être coupé) Pour simplifier la discussion, soit $ I_h = I_w = I $ et $ F_h = F_w = F $. Nous allons également dimensionner la sortie à $ O_h \ times O_w $, qui est également représentée par $ O_h = O_w = O $. Définissez également le nombre de canaux d'entrée sur $ C $, le nombre de filtres sur $ M $ et la taille du mini-lot sur $ B $. Le montant du calcul de l'opération de convolution dans la zone spatiale n'est pas de remplissage, pas de 1 $
O^2 F^2 \quad (\because O = I - F + 1)
Ce sera. Si la largeur du rembourrage est $ 2p $ et la foulée est $ s $
O^2 F^2 \quad \left(\because O = \left\lceil \cfrac{I - F + 2p}{s} \right\rceil + 1 \right)
n'est-ce pas.
En revanche, la quantité de calcul dans la région de Fourier est
Chaque canal d'entrée et chaque filtre sont indépendants, vous n'avez donc besoin d'effectuer qu'une transformée de Fourier sur chacun. L'efficacité de l'apprentissage peut être réduite pour certaines convolutions, mais la capacité de réutiliser efficacement les FFT peut l'emporter sur la surcharge d'une efficacité réduite.
Trouver la quantité de calcul pour la propagation avant et arrière rend la supériorité des opérations de convolution dans la région de Fourier plus apparente.
Zone spatiale | Région de Fourier | |
---|---|---|
$\cfrac{\partial L}{\partial y_M} * w^{\top}_{CM} $ | ||
Il convient de noter que
Comme on peut le lire dans ce tableau, ** la quantité de calcul dans la région spatiale est représentée par le produit de 5 termes **, tandis que la quantité de calcul dans la région de Fourier est ** le produit de jusqu'à 4 termes **. Cela signifie qu'il est représenté. En gros, l'ordre de la quantité de calcul dans le domaine spatial est le 5ème ordre (plus précisément le 7ème ordre), et dans le domaine de Fourier, il est le 4ème ordre (plus précisément le 5ème ordre). Calculons réellement et voyons quel effet cela aura sur la propagation vers l'avant.
B = 128 \quad C = 96 \\
M = 256 \quad F = 7
En supposant que $ I = 16, 64 $ est calculé, $ O = I --F + 1 = 10, 58 $, donc à propos de la zone spatiale
BCMO^2F^2 = 128 \times 96 \times 256 \times 10^2 \times 7^2 = 15,414,067,200 \simeq 15,4 milliards\\
BCMO^2F^2 = 128 \times 96 \times 256 \times 58^2 \times 7^2 = 518,529,220,608 \simeq 518,5 milliards
A propos de la région de Fourier
2C_{order}I^2(BM + BC + CM)\log{I} + 4BCMI^2 = 2 \times 16 \times 16^2 \times (128 \times 256 + 128 \times 96 + 96 \times 256) \log{16} + 4 \times 128 \times 96 \times 256 \times 16^2 = 1,581,554,875.654148 + 3,221,225,472 = 4,802,780,347.654148 \simeq 4,8 milliards\\
2C_{order}I^2(BM + BC + CM)\log{I} + 4BCMI^2 = 2 \times 16 \times 64^2 \times (128 \times 256 + 128 \times 96 + 96 \times 256) \log{64} + 4 \times 128 \times 96 \times 256 \times 64^2 = 37,957,317,015.69955 + 51,539,607,552 = 89,496,924,567.69955 \simeq 89,5 milliards
Avec ce sentiment, la différence s'élargira à mesure que la taille de l'entrée augmente.
Bien que l'algorithme soit une opération de convolution très simple dans la région de Fourier, il existe deux problèmes majeurs de mise en œuvre.
Les optimisations et contre-mesures suivantes ont été proposées pour chaque problème.
C'est la fin de l'aspect théorique. Le reste, ce sont les résultats expérimentaux. Je voulais que vous signaliez un peu plus concrètement quel type de calcul est en cours ... Certaines questions se sont posées lorsque j'ai essayé de l'implémenter ... Eh bien, ce domaine est similaire à un CNN normal Je me demande s'il doit se comporter comme ça.
L'expérience a été menée à l'aide du GPU GeForce GTX Titan de NVIDIA pour comparer l'implémentation du GPU CUDA Conv avec l'environnement d'apprentissage automatique Torch 7. La précision obtenue dans l'expérience n'est pas répertoriée, mais il semble qu'elle se situait dans la plage de tolérance.
Modifiez la taille du filtre, la taille d'entrée et la taille du mini-lot d'un CNN, en vous concentrant sur la deuxième couche où le nombre de canaux d'entrée est $ C = 96 $ et le nombre de canaux de sortie (c'est-à-dire le nombre de filtres) est $ M = 256
Ensuite, pour CNN, qui se concentrait uniquement sur la 2ème couche, cette fois, en se concentrant sur les 1ère à 5ème couches, le résultat de l'expérience en modifiant la taille du mini-lot $ B $ est montré dans la figure ci-dessous. .. Aucune donnée n'a été collectée car le gradient de la couche d'entrée vers l'entrée n'a pas besoin d'être calculé. Dans la plupart des cas, on peut lire qu'il possède la vitesse la plus rapide ou la deuxième plus rapide. De plus, on peut dire que le FCNN est efficace dans presque tous les cas car il est le plus rapide au total. Cela suggère également que la propagation vers l'avant est assez rapide, ce qui ** maximise ses avantages, comme lors de la réalisation d'inférences à l'aide d'un réseau formé **.
Enfin, c'est le résultat expérimental lorsque la couche de pooling et la couche entièrement connectée sont ajoutées au CNN ci-dessus. Cette expérience vise à voir si les détails d'implémentation tels que le remplissage et l'accès à la mémoire changent les performances. Le FCNN a également prouvé sa supériorité dans cette expérience.
Je vais le laisser dans une balle.
Ce qui précède est le contenu de l'article. C'est un algorithme simple mais puissant ~ Il semble que diverses études aient été menées depuis.
Je voudrais l'implémenter ... mais j'ai quelques doutes.
-Est-il nécessaire d'effectuer FFT / IFFT avant et après l'opération de convolution? --Dans le diagramme schématique du papier, le nombre de canaux d'entrée et le nombre de canaux de sortie sont les mêmes, mais le nombre de canaux de sortie de la couche de convolution dans la zone spatiale doit dépendre du nombre de filtres. De plus, quel que soit le canal auquel vous correspondez, la façon de l'aligner sur cette dimension est un problème.
Chacun d'eux n'est pas spécifié dans l'article ... Ça devrait l'être, mais on peut le lire subtilement, n'est-ce pas? Par exemple, dans [4 About the future](# 4-About the future)
--Explorez les moyens d'apprendre les filtres directement dans la région de Fourier
Parce que cela dit quelque chose comme, il semble que FFT / IFFT se fait uniquement avant et après l'opération du produit matriciel, ou le nombre de canaux change de la même manière que CNN dans le dernier tableau de l'expérience, je n'écris pas directement Cependant, il y a une description qui semble être le cas.
De plus, j'ai cherché et lu quelques articles ultérieurs, mais il y avait aussi une description de la façon de faire une FFT une seule fois et de tout exécuter dans la région de Fourier, donc cette région également. Je ne vais pas l'implémenter cette fois car je n'ai pas assez étudié l'inclure. Je ne peux pas nier le manque de compréhension de la transformation de Fourier.
En prime, je posterai des choses mathématiques.
Considérons la convolution suivante de la matrice d'entrée $ \ boldsymbol {A} $ et de la matrice de filtre $ \ boldsymbol {W} $. Cependant, pas de rembourrage, foulée 1 $.
\boldsymbol{A} = \left( \begin{array}[ccc]
aa_{1, 1} & a_{1, 2} & a_{1, 3} & a_{1, 4} \\
a_{2, 1} & a_{2, 2} & a_{2, 3} & a_{2, 4} \\
a_{3, 1} & a_{3, 2} & a_{3, 3} & a_{3, 4} \\
a_{4, 1} & a_{4, 2} & a_{4, 3} & a_{4, 4}
\end{array} \right) \qquad
\boldsymbol{W} = \left( \begin{array}[ccc]
ww_{1, 1} & w_{1, 2} \\
w_{2, 1} & w_{2, 2} \\
\end{array} \right)
Le résultat de la convolution est le suivant.
\begin{align}
\boldsymbol{AW} &= \left( \begin{array}[ccc]
aa_{1, 1}w_{1, 1} + a_{1, 2}w_{1, 2} + a_{2, 1}w_{2, 1} + a_{2, 2}w_{2, 2}
& a_{1, 2}w_{1, 1} + a_{1, 3}w_{1, 2} + a_{2, 2}w_{2, 1} + a_{2, 3}w_{2, 2}
& a_{1, 3}w_{1, 1} + a_{1, 4}w_{1, 2} + a_{2, 3}w_{2, 1} + a_{2, 4}w_{2, 2} \\
a_{2, 1}w_{1, 1} + a_{2, 2}w_{1, 2} + a_{3, 1}w_{2, 1} + a_{3, 2}w_{2, 2}
& a_{2, 2}w_{1, 1} + a_{2, 3}w_{1, 2} + a_{3, 2}w_{2, 1} + a_{2, 3}w_{2, 2}
& a_{2, 3}w_{1, 1} + a_{2, 4}w_{1, 2} + a_{3, 3}w_{2, 1} + a_{2, 4}w_{2, 2} \\
a_{3, 1}w_{1, 1} + a_{3, 2}w_{1, 2} + a_{4, 1}w_{2, 1} + a_{4, 2}w_{2, 2}
& a_{3, 2}w_{1, 1} + a_{3, 3}w_{1, 2} + a_{4, 2}w_{2, 1} + a_{4, 3}w_{2, 2}
& a_{3, 3}w_{1, 1} + a_{3, 4}w_{1, 2} + a_{4, 3}w_{2, 1} + a_{4, 4}w_{2, 2}
\end{array} \right) \\
&= \left( \begin{array}[ccc]
s\displaystyle\sum_{k=1}^{2}{\displaystyle\sum_{l=1}^{2}{a_{k, l}w_{k, l}}}
& \displaystyle\sum_{k=1}^{2}{\displaystyle\sum_{l=1}^{2}{a_{k, l+1}w_{k, l}}}
& \displaystyle\sum_{k=1}^{2}{\displaystyle\sum_{l=1}^{2}{a_{k, l+2}w_{k, l}}} \\
\displaystyle\sum_{k=1}^{2}{\displaystyle\sum_{l=1}^{2}{a_{k+1, l}w_{k, l}}}
& \displaystyle\sum_{k=1}^{2}{\displaystyle\sum_{l=1}^{2}{a_{k+1, l+1}w_{k, l}}}
& \displaystyle\sum_{k=1}^{2}{\displaystyle\sum_{l=1}^{2}{a_{k+1, l+2}w_{k, l}}} \\
\displaystyle\sum_{k=1}^{2}{\displaystyle\sum_{l=1}^{2}{a_{k+2, l}w_{k, l}}}
& \displaystyle\sum_{k=1}^{2}{\displaystyle\sum_{l=1}^{2}{a_{k+2, l+1}w_{k, l}}}
& \displaystyle\sum_{k=1}^{2}{\displaystyle\sum_{l=1}^{2}{a_{k+2, l+2}w_{k, l}}}
\end{array} \right)
\end{align}
Vous pouvez voir la régularité. Généralisons-le. Lorsque la taille du filtre est $ F_h \ fois F_w $, le $ (i, j) $ composant $ o_ {i, j} $ de la sortie est
o_{i, j} = \displaystyle\sum_{k=1}^{F_h}{\displaystyle\sum_{l=1}^{F_w}{a_{i+k-1, j+l-1}w_{k, l}}}
Peut être écrit comme. Veuillez noter que l'ordre d'ajout de l'indice a été modifié pour plus tard.
Il s'agit de l'opération de convolution dans CNN. C'est un pliage circulaire. À propos, mathématiquement, l'opération de convolution discrète bidimensionnelle est exprimée par l'équation suivante.
(g * f)_{i, j} = o_{i, j} = \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{i-k+1, j-l+1}g_{k, l}}}
D'une manière ou d'une autre, $ f $ est entré, $ g $ est considéré comme un filtre et l'ordre est inversé par rapport à la formule générale. De plus, $ k et l $ prennent toutes les valeurs pour lesquelles l'index est valide. À ce stade, ceux qui pensent «cela?» Sont vifs. Si cela est écrit dans une matrice (les tailles seront les mêmes pour chaque CNN)
\begin{align}
\boldsymbol{g*f} &= \left( \begin{array}[ccc]
s\displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{2-k, 2-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{2-k, 3-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{2-k, 4-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{2-k, 5-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{2-k, 6-l}g_{k, l}}} \\
\displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{3-k, 2-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{3-k, 3-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{3-k, 4-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{3-k, 5-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{3-k, 6-l}g_{k, l}}} \\
\displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{4-k, 2-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{4-k, 3-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{4-k, 4-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{4-k, 5-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{4-k, 6-l}g_{k, l}}} \\
\displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{5-k, 2-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{5-k, 3-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{5-k, 4-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{5-k, 5-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{5-k, 6-l}g_{k, l}}} \\
\displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{6-k, 2-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{6-k, 3-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{6-k, 4-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{6-k, 5-l}g_{k, l}}}
& \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{6-k, 6-l}g_{k, l}}} \\
\end{array} \right) \\
&= \left( \begin{array}[ccccc]
ff_{1, 1}g_{1, 1}
& f_{1, 2}g_{1, 1} + f_{1, 1}g_{1, 2}
& f_{1, 3}g_{1, 1} + f_{1, 2}g_{1, 2}
& f_{1, 4}g_{1, 1} + f_{1, 3}g_{1, 2}
& f_{1, 4}g_{1, 2} \\
f_{2, 1}g_{1, 1} + f_{1, 1}g_{2, 1}
& f_{2, 2}g_{1, 1} + f_{2, 1}g_{1, 2} + f_{1, 2}g_{2, 1} + f_{1, 1}g_{2, 2}
& f_{2, 3}g_{1, 1} + f_{2, 2}g_{1, 2} + f_{1, 3}g_{2, 1} + f_{1, 2}g_{2, 2}
& f_{2, 4}g_{1, 1} + f_{2, 3}g_{1, 2} + f_{1, 4}g_{2, 1} + f_{1, 3}g_{2, 2}
& f_{2, 4}g_{1, 2} + f_{1, 4}g_{2, 2} \\
f_{3, 1}g_{1, 1} + f_{2, 1}g_{2, 1}
& f_{3, 2}g_{1, 1} + f_{3, 1}g_{1, 2} + f_{2, 2}g_{2, 1} + f_{2, 1}g_{2, 2}
& f_{3, 3}g_{1, 1} + f_{3, 2}g_{1, 2} + f_{2, 3}g_{2, 1} + f_{2, 2}g_{2, 2}
& f_{3, 4}g_{1, 1} + f_{3, 3}g_{1, 2} + f_{2, 4}g_{2, 1} + f_{2, 3}g_{2, 2}
& f_{3, 4}g_{1, 2} + f_{2, 4}g_{2, 2} \\
f_{4, 1}g_{1, 1} + f_{3, 1}g_{2, 1}
& f_{4, 2}g_{1, 1} + f_{4, 1}g_{1, 2} + f_{3, 2}g_{2, 1} + f_{3, 1}g_{2, 2}
& f_{4, 3}g_{1, 1} + f_{4, 2}g_{1, 2} + f_{3, 3}g_{2, 1} + f_{3, 2}g_{2, 2}
& f_{4, 4}g_{1, 1} + f_{4, 3}g_{1, 2} + f_{3, 4}g_{2, 1} + f_{3, 3}g_{2, 2}
& f_{4, 4}g_{1, 2} + f_{3, 4}g_{2, 2} \\
f_{4, 1}g_{2, 1}
& f_{4, 2}g_{2, 1} + f_{4, 1}g_{2, 2}
& f_{4, 3}g_{2, 1} + f_{4, 2}g_{2, 2}
& f_{4, 4}g_{2, 1} + f_{4, 3}g_{2, 2}
& f_{4, 4}g_{2, 2}
\end{array} \right) \\
\end{align}
Ce sera.
Comme vous pouvez le voir en un coup d'œil, la convolution dans CNN et la convolution définie en mathématiques sont différentes. Cette différence est la différence entre la convolution circulaire et la convolution linéaire ... ** mais elle est en fait différente **. Même si vous appliquez ** padding, ce ne sera pas le même ** que dans [Comment égaliser la convolution linéaire et la convolution circulaire](# Comment égaliser la convolution linéaire et la convolution circulaire) présenté précédemment **. Je vais vraiment l'essayer.
\boldsymbol{A} = \left( \begin{array}[cccccc]
00 & 0 & 0 & 0 & 0 & 0 \\
0& a_{1, 1} & a_{1, 2} & a_{1, 3} & a_{1, 4} & 0 \\
0 & a_{2, 1} & a_{2, 2} & a_{2, 3} & a_{2, 4} & 0 \\
0 & a_{3, 1} & a_{3, 2} & a_{3, 3} & a_{3, 4} & 0 \\
0 & a_{4, 1} & a_{4, 2} & a_{4, 3} & a_{4, 4} & 0 \\
0 & 0 & 0 & 0 & 0 & 0
\end{array} \right)
Comme
\boldsymbol{AW} = \left( \begin{array}[ccccc]
aa_{1, 1}w_{2, 2}
& a_{1, 1}w_{2, 1} + a_{1, 2}w_{2, 2}
& a_{1, 2}w_{2, 1} + a_{1, 3}w_{2, 2}
& a_{1, 3}w_{2, 1} + a_{1, 4}w_{2, 2}
& a_{1, 4}w_{2, 1} \\
a_{1, 1}w_{1, 2} + a_{2, 1}w_{2, 2}
& a_{1, 1}w_{1, 1} + a_{1, 2}w_{1, 2} + a_{2, 1}w_{2, 1} + a_{2, 2}w_{2, 2}
& a_{1, 2}w_{1, 1} + a_{1, 3}w_{1, 2} + a_{2, 2}w_{2, 1} + a_{2, 3}w_{2, 2}
& a_{1, 3}w_{1, 1} + a_{1, 4}w_{1, 2} + a_{2, 3}w_{2, 1} + a_{2, 4}w_{2, 2}
& a_{1, 4}w_{1, 1} + a_{2, 4}w_{2, 1} \\
a_{2, 1}w_{1, 2} + a_{3, 1}w_{2, 2}
& a_{2, 1}w_{1, 1} + a_{2, 2}w_{1, 2} + a_{3, 1}w_{2, 1} + a_{3, 2}w_{2, 2}
& a_{2, 2}w_{1, 1} + a_{2, 3}w_{1, 2} + a_{3, 2}w_{2, 1} + a_{3, 3}w_{2, 2}
& a_{2, 3}w_{1, 1} + a_{2, 4}w_{1, 2} + a_{3, 3}w_{2, 1} + a_{3, 4}w_{2, 2}
& a_{2, 4}w_{1, 1} + a_{3, 4}w_{2, 1} \\
a_{3, 1}w_{1, 2} + a_{4, 1}w_{2, 2}
& a_{3, 1}w_{1, 1} + a_{3, 2}w_{1, 2} + a_{4, 1}w_{2, 1} + a_{4, 2}w_{2, 2}
& a_{3, 2}w_{1, 1} + a_{3, 3}w_{1, 2} + a_{4, 2}w_{2, 1} + a_{4, 3}w_{2, 2}
& a_{3, 3}w_{1, 1} + a_{3, 4}w_{1, 2} + a_{4, 3}w_{2, 1} + a_{4, 4}w_{2, 2}
& a_{3, 4}w_{1, 1} + a_{4, 4}w_{2, 1} \\
a_{4, 1}w_{1, 2}
& a_{4, 1}w_{1, 1} + a_{4, 2}w_{1, 2}
& a_{4, 2}w_{1, 1} + a_{4, 3}w_{1, 2}
& a_{4, 3}w_{1, 1} + a_{4, 4}w_{1, 2}
& a_{4, 4}w_{1, 1}
\end{array} \right)
Ce sera. Les formes correspondent, le nombre d'ajouts pour chaque élément est le même, mais les index sont différents. Cela signifie que ** la convolution CNN est une opération distincte de la convolution définie mathématiquement **.
C'était un aperçu de la convolution de cet article
Lorsqu'il s'agit de discussions théoriquement rigoureuses, c'est en fait différent des hypothèses.
C'est. En premier lieu ** l'hypothèse selon laquelle "la convolution CNN est une convolution mathématique" était fausse **.
Vous vous demandez peut-être, "Alors à quel type de définition la convolution CNN correspond-elle mathématiquement, ou y a-t-il une définition mathématique correspondante?", Mais il existe une définition mathématique appropriée pour cela. ** Relation mutuelle **.
(g \star f)_{i, j} = o_{i, j} = \displaystyle\sum_{k}{\displaystyle\sum_{l}{f_{i+k-1, j+l-1}g_{k, l}}}
Comme pour la convolution mathématique, $ k et l $ prennent toutes les valeurs qui sont des index valides. Il s'agit d'une définition similaire à la convolution CNN, vous pouvez donc imaginer que vous obtiendrez le même résultat.
Cette intercorrélation calcule la similitude des deux signaux ($ f $ et $ g $). Comme ce n'est pas si pertinent, je laisserai le soin au site de référence pour plus de détails, mais en d'autres termes, le filtre CNN est similaire au modèle spécifique d'entrée. Vous apprenez la fonction de distribution que vous utilisez.
L'important ici est ** de savoir si nous pouvons d'une manière ou d'une autre amener l'intercorrélation dans une convolution mathématique **. Le processus de pliage et de pliage, qui était la norme, n'était pas en fait un pliage, mais il couvrirait la base de la discussion, et il faudrait tout reconsidérer. Les chercheurs qui ont beaucoup réfléchi à l'interprétation des filtres vont pleurer ...
Comparons la convolution mathématique avec la convolution CNN lors du remplissage.
\left( \begin{array}[ccccc]
ff_{1, 1}g_{1, 1}
& f_{1, 2}g_{1, 1} + f_{1, 1}g_{1, 2}
& f_{1, 3}g_{1, 1} + f_{1, 2}g_{1, 2}
& f_{1, 4}g_{1, 1} + f_{1, 3}g_{1, 2}
& f_{1, 4}g_{1, 2} \\
f_{2, 1}g_{1, 1} + f_{1, 1}g_{2, 1}
& f_{2, 2}g_{1, 1} + f_{2, 1}g_{1, 2} + f_{1, 2}g_{2, 1} + f_{1, 1}g_{2, 2}
& f_{2, 3}g_{1, 1} + f_{2, 2}g_{1, 2} + f_{1, 3}g_{2, 1} + f_{1, 2}g_{2, 2}
& f_{2, 4}g_{1, 1} + f_{2, 3}g_{1, 2} + f_{1, 4}g_{2, 1} + f_{1, 3}g_{2, 2}
& f_{2, 4}g_{1, 2} + f_{1, 4}g_{2, 2} \\
f_{3, 1}g_{1, 1} + f_{2, 1}g_{2, 1}
& f_{3, 2}g_{1, 1} + f_{3, 1}g_{1, 2} + f_{2, 2}g_{2, 1} + f_{2, 1}g_{2, 2}
& f_{3, 3}g_{1, 1} + f_{3, 2}g_{1, 2} + f_{2, 3}g_{2, 1} + f_{2, 2}g_{2, 2}
& f_{3, 4}g_{1, 1} + f_{3, 3}g_{1, 2} + f_{2, 4}g_{2, 1} + f_{2, 3}g_{2, 2}
& f_{3, 4}g_{1, 2} + f_{2, 4}g_{2, 2} \\
f_{4, 1}g_{1, 1} + f_{3, 1}g_{2, 1}
& f_{4, 2}g_{1, 1} + f_{4, 1}g_{1, 2} + f_{3, 2}g_{2, 1} + f_{3, 1}g_{2, 2}
& f_{4, 3}g_{1, 1} + f_{4, 2}g_{1, 2} + f_{3, 3}g_{2, 1} + f_{3, 2}g_{2, 2}
& f_{4, 4}g_{1, 1} + f_{4, 3}g_{1, 2} + f_{3, 4}g_{2, 1} + f_{3, 3}g_{2, 2}
& f_{4, 4}g_{1, 2} + f_{3, 4}g_{2, 2} \\
f_{4, 1}g_{2, 1}
& f_{4, 2}g_{2, 1} + f_{4, 1}g_{2, 2}
& f_{4, 3}g_{2, 1} + f_{4, 2}g_{2, 2}
& f_{4, 4}g_{2, 1} + f_{4, 3}g_{2, 2}
& f_{4, 4}g_{2, 2}
\end{array} \right) \\
\left( \begin{array}[ccccc]
aa_{1, 1}w_{2, 2}
& a_{1, 1}w_{2, 1} + a_{1, 2}w_{2, 2}
& a_{1, 2}w_{2, 1} + a_{1, 3}w_{2, 2}
& a_{1, 3}w_{2, 1} + a_{1, 4}w_{2, 2}
& a_{1, 4}w_{2, 1} \\
a_{1, 1}w_{1, 2} + a_{2, 1}w_{2, 2}
& a_{1, 1}w_{1, 1} + a_{1, 2}w_{1, 2} + a_{2, 1}w_{2, 1} + a_{2, 2}w_{2, 2}
& a_{1, 2}w_{1, 1} + a_{1, 3}w_{1, 2} + a_{2, 2}w_{2, 1} + a_{2, 3}w_{2, 2}
& a_{1, 3}w_{1, 1} + a_{1, 4}w_{1, 2} + a_{2, 3}w_{2, 1} + a_{2, 4}w_{2, 2}
& a_{1, 4}w_{1, 1} + a_{2, 4}w_{2, 1} \\
a_{2, 1}w_{1, 2} + a_{3, 1}w_{2, 2}
& a_{2, 1}w_{1, 1} + a_{2, 2}w_{1, 2} + a_{3, 1}w_{2, 1} + a_{3, 2}w_{2, 2}
& a_{2, 2}w_{1, 1} + a_{2, 3}w_{1, 2} + a_{3, 2}w_{2, 1} + a_{3, 3}w_{2, 2}
& a_{2, 3}w_{1, 1} + a_{2, 4}w_{1, 2} + a_{3, 3}w_{2, 1} + a_{3, 4}w_{2, 2}
& a_{2, 4}w_{1, 1} + a_{3, 4}w_{2, 1} \\
a_{3, 1}w_{1, 2} + a_{4, 1}w_{2, 2}
& a_{3, 1}w_{1, 1} + a_{3, 2}w_{1, 2} + a_{4, 1}w_{2, 1} + a_{4, 2}w_{2, 2}
& a_{3, 2}w_{1, 1} + a_{3, 3}w_{1, 2} + a_{4, 2}w_{2, 1} + a_{4, 3}w_{2, 2}
& a_{3, 3}w_{1, 1} + a_{3, 4}w_{1, 2} + a_{4, 3}w_{2, 1} + a_{4, 4}w_{2, 2}
& a_{3, 4}w_{1, 1} + a_{4, 4}w_{2, 1} \\
a_{4, 1}w_{1, 2}
& a_{4, 1}w_{1, 1} + a_{4, 2}w_{1, 2}
& a_{4, 2}w_{1, 1} + a_{4, 3}w_{1, 2}
& a_{4, 3}w_{1, 1} + a_{4, 4}w_{1, 2}
& a_{4, 4}w_{1, 1}
\end{array} \right)
N'est-ce pas cool? Par exemple
\left( \begin{array}[ccc]
gg_{1, 1} & g_{1, 2} \\
g_{2, 1} & g_{2, 2} \\
\end{array} \right)
= \left( \begin{array}[ccc]
ww_{2, 2} & w_{2, 1} \\
w_{1, 2} & w_{1, 1} \\
\end{array} \right)
Que faire
\left( \begin{array}[ccccc]
ff_{1, 1}g_{1, 1}
& f_{1, 2}g_{1, 1} + f_{1, 1}g_{1, 2}
& f_{1, 3}g_{1, 1} + f_{1, 2}g_{1, 2}
& f_{1, 4}g_{1, 1} + f_{1, 3}g_{1, 2}
& f_{1, 4}g_{1, 2} \\
f_{2, 1}g_{1, 1} + f_{1, 1}g_{2, 1}
& f_{2, 2}g_{1, 1} + f_{2, 1}g_{1, 2} + f_{1, 2}g_{2, 1} + f_{1, 1}g_{2, 2}
& f_{2, 3}g_{1, 1} + f_{2, 2}g_{1, 2} + f_{1, 3}g_{2, 1} + f_{1, 2}g_{2, 2}
& f_{2, 4}g_{1, 1} + f_{2, 3}g_{1, 2} + f_{1, 4}g_{2, 1} + f_{1, 3}g_{2, 2}
& f_{2, 4}g_{1, 2} + f_{1, 4}g_{2, 2} \\
f_{3, 1}g_{1, 1} + f_{2, 1}g_{2, 1}
& f_{3, 2}g_{1, 1} + f_{3, 1}g_{1, 2} + f_{2, 2}g_{2, 1} + f_{2, 1}g_{2, 2}
& f_{3, 3}g_{1, 1} + f_{3, 2}g_{1, 2} + f_{2, 3}g_{2, 1} + f_{2, 2}g_{2, 2}
& f_{3, 4}g_{1, 1} + f_{3, 3}g_{1, 2} + f_{2, 4}g_{2, 1} + f_{2, 3}g_{2, 2}
& f_{3, 4}g_{1, 2} + f_{2, 4}g_{2, 2} \\
f_{4, 1}g_{1, 1} + f_{3, 1}g_{2, 1}
& f_{4, 2}g_{1, 1} + f_{4, 1}g_{1, 2} + f_{3, 2}g_{2, 1} + f_{3, 1}g_{2, 2}
& f_{4, 3}g_{1, 1} + f_{4, 2}g_{1, 2} + f_{3, 3}g_{2, 1} + f_{3, 2}g_{2, 2}
& f_{4, 4}g_{1, 1} + f_{4, 3}g_{1, 2} + f_{3, 4}g_{2, 1} + f_{3, 3}g_{2, 2}
& f_{4, 4}g_{1, 2} + f_{3, 4}g_{2, 2} \\
f_{4, 1}g_{2, 1}
& f_{4, 2}g_{2, 1} + f_{4, 1}g_{2, 2}
& f_{4, 3}g_{2, 1} + f_{4, 2}g_{2, 2}
& f_{4, 4}g_{2, 1} + f_{4, 3}g_{2, 2}
& f_{4, 4}g_{2, 2}
\end{array} \right) \\
= \left( \begin{array}[ccccc]
ff_{1, 1}w_{2, 2}
& f_{1, 2}w_{2, 2} + f_{1, 1}w_{2, 1}
& f_{1, 3}w_{2, 2} + f_{1, 2}w_{2, 1}
& f_{1, 4}w_{2, 2} + f_{1, 3}w_{2, 1}
& f_{1, 4}w_{2, 1} \\
f_{2, 1}w_{2, 2} + f_{1, 1}w_{1, 2}
& f_{2, 2}w_{2, 2} + f_{2, 1}w_{2, 1} + f_{1, 2}w_{1, 2} + f_{1, 1}w_{1, 1}
& f_{2, 3}w_{2, 2} + f_{2, 2}w_{2, 1} + f_{1, 3}w_{1, 2} + f_{1, 2}w_{1, 1}
& f_{2, 4}w_{2, 2} + f_{2, 3}w_{2, 1} + f_{1, 4}w_{1, 2} + f_{1, 3}w_{1, 1}
& f_{2, 4}w_{2, 1} + f_{1, 4}w_{1, 1} \\
f_{3, 1}w_{2, 2} + f_{2, 1}w_{1, 2}
& f_{3, 2}w_{2, 2} + f_{3, 1}w_{2, 1} + f_{2, 2}w_{1, 2} + f_{2, 1}w_{1, 1}
& f_{3, 3}w_{2, 2} + f_{3, 2}w_{2, 1} + f_{2, 3}w_{1, 2} + f_{2, 2}w_{1, 1}
& f_{3, 4}w_{2, 2} + f_{3, 3}w_{2, 1} + f_{2, 4}w_{1, 2} + f_{2, 3}w_{1, 1}
& f_{3, 4}w_{2, 1} + f_{2, 4}w_{1, 1} \\
f_{4, 1}w_{2, 2} + f_{3, 1}w_{1, 2}
& f_{4, 2}w_{2, 2} + f_{4, 1}w_{2, 1} + f_{3, 2}w_{1, 2} + f_{3, 1}w_{1, 1}
& f_{4, 3}w_{2, 2} + f_{4, 2}w_{2, 1} + f_{3, 3}w_{1, 2} + f_{3, 2}w_{1, 1}
& f_{4, 4}w_{2, 2} + f_{4, 3}w_{2, 1} + f_{3, 4}w_{1, 2} + f_{3, 3}w_{1, 1}
& f_{4, 4}w_{2, 1} + f_{3, 4}w_{1, 1} \\
f_{4, 1}w_{1, 2}
& f_{4, 2}w_{1, 2} + f_{4, 1}w_{1, 1}
& f_{4, 3}w_{1, 2} + f_{4, 2}w_{1, 1}
& f_{4, 4}w_{1, 2} + f_{4, 3}w_{1, 1}
& f_{4, 4}w_{1, 1}
\end{array} \right) \\
\underbrace{=}_{Changer l'ordre d'ajout}
\left( \begin{array}[ccccc]
ff_{1, 1}w_{2, 2}
& f_{1, 1}w_{2, 1} + f_{1, 2}w_{2, 2}
& f_{1, 2}w_{2, 1} + f_{1, 3}w_{2, 2}
& f_{1, 3}w_{2, 1} + f_{1, 4}w_{2, 2}
& f_{1, 4}w_{2, 1} \\
f_{1, 1}w_{1, 2} + f_{2, 1}w_{2, 2}
& f_{1, 1}w_{1, 1} + f_{1, 2}w_{1, 2} + f_{2, 1}w_{2, 1} + f_{2, 2}w_{2, 2}
& f_{1, 2}w_{1, 1} + f_{1, 3}w_{1, 2} + f_{2, 2}w_{2, 1} + f_{2, 3}w_{2, 2}
& f_{1, 3}w_{1, 1} + f_{1, 4}w_{1, 2} + f_{2, 3}w_{2, 1} + f_{2, 4}w_{2, 2}
& f_{1, 4}w_{1, 1} + f_{2, 4}w_{2, 1} \\
f_{2, 1}w_{1, 2} + f_{3, 1}w_{2, 2}
& f_{2, 1}w_{1, 1} + f_{2, 2}w_{1, 2} + f_{3, 1}w_{2, 1} + f_{3, 2}w_{2, 2}
& f_{2, 2}w_{1, 1} + f_{2, 3}w_{1, 2} + f_{3, 2}w_{2, 1} + f_{3, 3}w_{2, 2}
& f_{2, 3}w_{1, 1} + f_{2, 4}w_{1, 2} + f_{3, 3}w_{2, 1} + f_{3, 4}w_{2, 2}
& f_{2, 4}w_{1, 1} + f_{3, 4}w_{2, 1} \\
f_{3, 1}w_{1, 2} + f_{4, 1}w_{2, 2}
& f_{3, 1}w_{1, 1} + f_{3, 2}w_{1, 2} + f_{4, 1}w_{2, 1} + f_{4, 2}w_{2, 2}
& f_{3, 2}w_{1, 1} + f_{3, 3}w_{1, 2} + f_{4, 2}w_{2, 1} + f_{4, 3}w_{2, 2}
& f_{3, 3}w_{1, 1} + f_{3, 4}w_{1, 2} + f_{4, 3}w_{2, 1} + f_{4, 4}w_{2, 2}
& f_{3, 4}w_{1, 1} + f_{4, 4}w_{2, 1} \\
f_{4, 1}w_{1, 2}
& f_{4, 1}w_{1, 1} + f_{4, 2}w_{1, 2}
& f_{4, 2}w_{1, 1} + f_{4, 3}w_{1, 2}
& f_{4, 3}w_{1, 1} + f_{4, 4}w_{1, 2}
& f_{4, 4}w_{1, 1}
\end{array} \right) \\
\Leftrightarrow
\left( \begin{array}[ccccc]
aa_{1, 1}w_{2, 2}
& a_{1, 1}w_{2, 1} + a_{1, 2}w_{2, 2}
& a_{1, 2}w_{2, 1} + a_{1, 3}w_{2, 2}
& a_{1, 3}w_{2, 1} + a_{1, 4}w_{2, 2}
& a_{1, 4}w_{2, 1} \\
a_{1, 1}w_{1, 2} + a_{2, 1}w_{2, 2}
& a_{1, 1}w_{1, 1} + a_{1, 2}w_{1, 2} + a_{2, 1}w_{2, 1} + a_{2, 2}w_{2, 2}
& a_{1, 2}w_{1, 1} + a_{1, 3}w_{1, 2} + a_{2, 2}w_{2, 1} + a_{2, 3}w_{2, 2}
& a_{1, 3}w_{1, 1} + a_{1, 4}w_{1, 2} + a_{2, 3}w_{2, 1} + a_{2, 4}w_{2, 2}
& a_{1, 4}w_{1, 1} + a_{2, 4}w_{2, 1} \\
a_{2, 1}w_{1, 2} + a_{3, 1}w_{2, 2}
& a_{2, 1}w_{1, 1} + a_{2, 2}w_{1, 2} + a_{3, 1}w_{2, 1} + a_{3, 2}w_{2, 2}
& a_{2, 2}w_{1, 1} + a_{2, 3}w_{1, 2} + a_{3, 2}w_{2, 1} + a_{3, 3}w_{2, 2}
& a_{2, 3}w_{1, 1} + a_{2, 4}w_{1, 2} + a_{3, 3}w_{2, 1} + a_{3, 4}w_{2, 2}
& a_{2, 4}w_{1, 1} + a_{3, 4}w_{2, 1} \\
a_{3, 1}w_{1, 2} + a_{4, 1}w_{2, 2}
& a_{3, 1}w_{1, 1} + a_{3, 2}w_{1, 2} + a_{4, 1}w_{2, 1} + a_{4, 2}w_{2, 2}
& a_{3, 2}w_{1, 1} + a_{3, 3}w_{1, 2} + a_{4, 2}w_{2, 1} + a_{4, 3}w_{2, 2}
& a_{3, 3}w_{1, 1} + a_{3, 4}w_{1, 2} + a_{4, 3}w_{2, 1} + a_{4, 4}w_{2, 2}
& a_{3, 4}w_{1, 1} + a_{4, 4}w_{2, 1} \\
a_{4, 1}w_{1, 2}
& a_{4, 1}w_{1, 1} + a_{4, 2}w_{1, 2}
& a_{4, 2}w_{1, 1} + a_{4, 3}w_{1, 2}
& a_{4, 3}w_{1, 1} + a_{4, 4}w_{1, 2}
& a_{4, 4}w_{1, 1}
\end{array} \right)
Et est devenu le même! Cela signifie que ** l'intercorrélation et la convolution mathématique peuvent, espérons-le, être la même opération **. Dans ce cas, "to work" est une inversion d'index si elle est discrète, et une inversion plus ou moins si elle est continue.
Vous pouvez donc considérer le filtre CNN comme l'apprentissage d'un filtre à convolution inversé, et les chercheurs n'ont pas à pleurer.
Tout d'abord, vérifions la définition de la transformée de Fourier discrète en premier lieu. Pour simplifier, considérons un vecteur unidimensionnel $ \ boldsymbol {x} $ avec une longueur de $ N $ comme une transformée de Fourier discrète.
X_k = \mathcal{F}_{\boldsymbol{x}}(k) = \sum_{p=0}^{N-1}{x_p e^{-j\frac{2 \pi}{N}kp}} = \sum_{p=0}^{N-1}{x_p W_N^{kp}} \quad k = 0, 1, \ldots N-1 \\
W_N^{kp} = e^{-j\frac{2 \pi}{N}}
Ce sera. Ici, le symbole imaginaire est $ j $. De plus, $ W_N = e ^ {-j \ frac {2 \ pi} {N}} $ est appelé ** facteur de rotation **. La raison sera décrite plus tard. Ce montant de calcul est $ \ mathcal {O} (N ^ 2) $, mais ce calcul peut être accéléré en supposant que $ N $ est pair. L'algorithme s'appelle ** FFT: Fast Fourier Transformation ** et peut être exprimé comme:
\begin{align}
X_{2k} = \mathcal{F}_{\boldsymbol{x}}(2k) &= \sum_{p=0}^{N-1}{x_p W_N^{2kp}} & \\
&= \sum_{p=0}^{N-1}{x_p W_{N/2}^{kp}} & (\because W_N^{2kp} = e^{-j\frac{2 \pi}{N}2kp} = e^{-j\frac{2 \pi}{N/2}kp} = W_{N/2}^{kp}) \\
&= \sum_{p=0}^{N/2-1}{x_p W_{N/2}^{kp}} + \sum_{p=N/2}^{N-1}{x_p W_{N/2}^{kp}} & (\car divisé entre la première moitié et la seconde moitié, W_{N/2}^{kp}Nombre d'éléments de\frac{N}{2}Correspondre) \\
&= \sum_{p=0}^{N/2-1}{x_p W_{N/2}^{kp}} + \sum_{p=0}^{N/2-1}{x_{p+N/2} W_{N/2}^{k(p+N/2)}} & (\car la somme de la seconde moitié est p=Passer à 0 début) \\
&= \sum_{p=0}^{N/2-1}{x_p W_{N/2}^{kp}} + \sum_{p=0}^{N/2-1}{x_{p+N/2} W_{N/2}^{kp}} & (\because W_{N/2}^{k(N/2)} = e^{-j\frac{2 \pi}{N/2}k(N/2)} = e^{-j2k \pi} = 1) \\
&= \sum_{p=0}^{N/2-1}{(x_p + x_{p+N/2}) W_{N/2}^{kp}} \quad k = 0, 1, \ldots, \cfrac{N}{2} & \\
X_{2k+1} = \mathcal{F}_{\boldsymbol{x}}(2k+1) &= \sum_{p=0}^{N-1}{x_p W_N^{(2k+1)p}} & \\
&= \sum_{p=0}^{N-1}{x_p W_{N}^{p}W_{N/2}^{kp}} & \\
&= \sum_{p=0}^{N/2-1}{x_p W_{N}^{p}W_{N/2}^{kp}} + \sum_{p=N/2}^{N-1}{x_p W_{N}^{p}W_{N/2}^{kp}} & \\
&= \sum_{p=0}^{N/2-1}{x_p W_{N}^{p}W_{N/2}^{kp}} + \sum_{p=0}^{N/2-1}{x_{p+N/2} W_{N}^{p+N/2}W_{N/2}^{k(p+N/2)}} & \\
&= \sum_{p=0}^{N/2-1}{x_p W_{N}^{p}W_{N/2}^{kp}} - \sum_{p=0}^{N/2-1}{x_{p+N/2} W_{N}^{p}W_{N/2}^{kp}} & \\
&= \sum_{p=0}^{N/2-1}{(x_p - x_{p+N/2}) W_{N}^{p} W_{N/2}^{kp}} \quad k = 0, 1, \ldots, \cfrac{N}{2}-1 &
\end{align}
Par définition, $ W $ est appelé un facteur de rotation car il représente un point sur la circonférence unitaire dont l'angle de rotation est ** dans le sens des aiguilles d'une montre ** et $ \ frac {2 \ pi} {N} $. .. Par conséquent, l'expression relationnelle suivante est valable.
W_{2n}^{kn} = e^{-j\frac{2 \pi}{2n}kn} = e^{-j k \pi} = (-1)^k
Cette expression relationnelle est fondamentalement la valeur lorsque l'angle de rotation est $ k \ pi $. Cette formule est utilisée partout pour transformer la formule FFT.
<détails> e^{jx} = \cos x + j \sin x
e^{j \pi} = \cos \pi + j \sin \pi \Leftrightarrow e^{j \pi} = -1 + j0 \\
\therefore e^{j \pi} + 1 = 0
\begin{align}
e^{j(-k \pi)} &= \cos (-k \pi) + j \sin (-k \pi) \\
&= (-1)^k \\
\end{align}
Cet algorithme FFT divise par deux la quantité de calcul. Et l'extension de cette opération est ** l'algorithme FFT de Cooley-Turquie **. L'algorithme FFT de Cooley_Turkey suppose que la longueur du vecteur $ N $ est une puissance de 2 et adapte itérativement la FFT pour des vitesses encore plus rapides. Lorsque la longueur du vecteur devient $ 1 $ en répétant la division, toutes les valeurs de la transformée de Fourier peuvent être obtenues en trouvant la valeur de la transformée de Fourier.
\begin{align}
\boldsymbol{X}^\top &= \left( \begin{array}[c]
d\displaystyle\sum_{p=0}^{7}{x_p W_8^{0}} \\
\displaystyle\sum_{p=0}^{7}{x_p W_8^{p}} \\
\displaystyle\sum_{p=0}^{7}{x_p W_8^{2p}} \\
\displaystyle\sum_{p=0}^{7}{x_p W_8^{3p}} \\
\displaystyle\sum_{p=0}^{7}{x_p W_8^{4p}} \\
\displaystyle\sum_{p=0}^{7}{x_p W_8^{5p}} \\
\displaystyle\sum_{p=0}^{7}{x_p W_8^{6p}} \\
\displaystyle\sum_{p=0}^{7}{x_p W_8^{7p}} \\
\end{array}\right)
= \left( \begin{array}[c]
xx_0W_8^0 + x_1W_8^0 + x_2W_8^0 + x_3W_8^0 + x_4W_8^0 + x_5W_8^0 + x_6W_8^0 + x_7W_8^0 \\
x_0W_8^0 + x_1W_8^1 + x_2W_8^2 + x_3W_8^3 + x_4W_8^4 + x_5W_8^5 + x_6W_8^6 + x_7W_8^7 \\
x_0W_8^0 + x_1W_8^2 + x_2W_8^4 + x_3W_8^6 + x_4W_8^8 + x_5W_8^{10} + x_6W_8^{12} + x_7W_8^{14} \\
x_0W_8^0 + x_1W_8^3 + x_2W_8^6 + x_3W_8^9 + x_4W_8^{12} + x_5W_8^{15} + x_6W_8^{18} + x_7W_8^{21} \\
x_0W_8^0 + x_1W_8^4 + x_2W_8^8 + x_3W_8^{12} + x_4W_8^{16} + x_5W_8^{20} + x_6W_8^{24} + x_7W_8^{28} \\
x_0W_8^0 + x_1W_8^5 + x_2W_8^{10} + x_3W_8^{15} + x_4W_8^{20} + x_5W_8^{25} + x_6W_8^{30} + x_7W_8^{35} \\
x_0W_8^0 + x_1W_8^6 + x_2W_8^{12} + x_3W_8^{18} + x_4W_8^{24} + x_5W_8^{30} + x_6W_8^{36} + x_7W_8^{42} \\
x_0W_8^0 + x_1W_8^7 + x_2W_8^{14} + x_3W_8^{21} + x_4W_8^{28} + x_5W_8^{35} + x_6W_8^{42} + x_7W_8^{49} \\
\end{array}\right) \\
&= \left( \begin{array}[cccccccc]
WW_8^0 & W_8^0 & W_8^0 & W_8^0 & W_8^0 & W_8^0 & W_8^0 & W_8^0 \\
W_8^0 & W_8^1 & W_8^2 & W_8^3 & W_8^4 & W_8^5 & W_8^6 & W_8^7 \\
W_8^0 & W_8^2 & W_8^4 & W_8^6 & W_8^8 & W_8^{10} & W_8^{12} & W_8^{14} \\
W_8^0 & W_8^3 & W_8^6 & W_8^9 & W_8^{12} & W_8^{15} & W_8^{18} & W_8^{21} \\
W_8^0 & W_8^4 & W_8^8 & W_8^{12} & W_8^{16} & W_8^{20} & W_8^{24} & W_8^{28} \\
W_8^0 & W_8^5 & W_8^{10} & W_8^{15} & W_8^{20} & W_8^{25} & W_8^{30} & W_8^{35} \\
W_8^0 & W_8^6 & W_8^{12} & W_8^{18} & W_8^{24} & W_8^{30} & W_8^{36} & W_8^{42} \\
W_8^0 & W_8^7 & W_8^{14} & W_8^{21} & W_8^{28} & W_8^{35} & W_8^{42} & W_8^{49} \\
\end{array}\right)
\left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7 \\
\end{array}\right) \\
&= \left( \begin{array}[cccccccc]
11 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
1 & e^{-j\frac{\pi}{4}} & -j & e^{-j\frac{3\pi}{4}} & -1 & e^{-j\frac{5\pi}{4}} & j & e^{-j\frac{7\pi}{4}} \\
1 & -j & -1 & j & 1 & -j & -1 & j \\
1 & e^{-j\frac{3\pi}{4}} & j & e^{-j\frac{\pi}{4}} & -1 & e^{-j\frac{7\pi}{4}} & -j & e^{-j\frac{5\pi}{4}} \\
1 & -1 & 1 & -1 & 1 & -1 & 1 & -1 \\
1 & e^{-j\frac{5\pi}{4}} & -j & e^{-j\frac{7\pi}{4}} & -1 & e^{-j\frac{\pi}{4}} & j & e^{-j\frac{3\pi}{4}} \\
1 & j & -1 & -j & 1 & j & -1 & -j \\
1 & e^{-j\frac{7\pi}{4}} & j & e^{-j\frac{5\pi}{4}} & -1 & e^{-j\frac{3\pi}{4}} & -j & e^{-j\frac{\pi}{4}} \\
\end{array}\right)
\left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7 \\
\end{array}\right)
\end{align}
\begin{align}
X_{2k} &= \sum_{p=0}^{3}{(x_p + x_{p+4}) W_{4}^{kp}} \\
X_{2k+1} &= \sum_{p=0}^{3}{(x_p - x_{p+4})W_{8}^{p} W_{4}^{kp}}
\end{align}
\begin{align}
X^{(0)} &= (X_0, X_2, X_4, X_6) \\
X^{(1)} &= (X_1, X_3, X_5, X_7)
\end{align}
\begin{align}
X^{(0)\top} &= \left( \begin{array}[c]
XX_0 \\
X_2 \\
X_4 \\
X_6
\end{array} \right) = \left( \begin{array}[c]
d\displaystyle\sum_{p=0}^{3}{(x_p + x_{p+4}) W_4^{0}} \\
\displaystyle\sum_{p=0}^{3}{(x_p + x_{p+4}) W_4^{p}} \\
\displaystyle\sum_{p=0}^{3}{(x_p + x_{p+4}) W_4^{2p}} \\
\displaystyle\sum_{p=0}^{3}{(x_p + x_{p+4}) W_4^{3p}}
\end{array} \right) & \\
&= \left( \begin{array}[c]
((x_0 + x_4) W_4^0 + (x_1 + x_5) W_4^0 + (x_2 + x_6) W_4^0 + (x_3 + x_7) W_4^0 \\
(x_0 + x_4) W_4^0 + (x_1 + x_5) W_4^1 + (x_2 + x_6) W_4^2 + (x_3 + x_7) W_4^3 \\
(x_0 + x_4) W_4^0 + (x_1 + x_5) W_4^2 + (x_2 + x_6) W_4^4 + (x_3 + x_7) W_4^6 \\
(x_0 + x_4) W_4^0 + (x_1 + x_5) W_4^3 + (x_2 + x_6) W_4^6 + (x_3 + x_7) W_4^9 \\
\end{array} \right) & \\
&= \left( \begin{array}[c]
xx_0 W_4^0 + x_1 W_4^0 + x_2 W_4^0 + x_3 W_4^0 + x_4 W_4^0 + x_5 W_4^0 + x_6 W_4^0 + x_7 W_4^0 \\
x_0 W_4^0 + x_1 W_4^1 + x_2 W_4^2 + x_3 W_4^3 + x_4 W_4^0 + x_5 W_4^1 + x_6 W_4^2 + x_7 W_4^3 \\
x_0 W_4^0 + x_1 W_4^2 + x_2 W_4^4 + x_3 W_4^6 + x_4 W_4^0 + x_5 W_4^2 + x_6 W_4^4 + x_7 W_4^6 \\
x_0 W_4^0 + x_1 W_4^3 + x_2 W_4^6 + x_3 W_4^9 + x_4 W_4^0 + x_5 W_4^3 + x_6 W_4^6 + x_7 W_4^9 \\
\end{array} \right) & \\
&= \left( \begin{array}[cccccccc]
WW_4^0 & W_4^0 & W_4^0 & W_4^0 & W_4^0 & W_4^0 & W_4^0 & W_4^0 \\
W_4^0 & W_4^1 & W_4^2 & W_4^3 & W_4^0 & W_4^1 & W_4^2 & W_4^3 \\
W_4^0 & W_4^2 & W_4^4 & W_4^6 & W_4^0 & W_4^2 & W_4^4 & W_4^6 \\
W_4^0 & W_4^3 & W_4^6 & W_4^9 & W_4^0 & W_4^3 & W_4^6 & W_4^9 \\
\end{array} \right)
\left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) & \\
&= \left( \begin{array}[cccccccc]
11 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
1 & -j & -1 & j & 1 & -j & -1 & j \\
1 & -1 & 1 & -1 & 1 & -1 & 1 & -1 \\
1 & j & -1 & -j & 1 & j & -1 & j \\
\end{array} \right)
\left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) & \\
X^{(1)\top} &= \left( \begin{array}[c]
XX_1 \\
X_3 \\
X_5 \\
X_7
\end{array} \right) = \left( \begin{array}[c]
d\displaystyle\sum_{p=0}^{3}{(x_p - x_{p+4})W_8^{p} W_4^{0}} \\
\displaystyle\sum_{p=0}^{3}{(x_p - x_{p+4})W_8^{p} W_4^{p}} \\
\displaystyle\sum_{p=0}^{3}{(x_p - x_{p+4})W_8^{p} W_4^{2p}} \\
\displaystyle\sum_{p=0}^{3}{(x_p - x_{p+4})W_8^{p} W_4^{3p}}
\end{array} \right) & \\
&= \left( \begin{array}[c]
((x_0 - x_4)W_8^{0} W_4^0 + (x_1 - x_5)W_8^1 W_4^0 + (x_2 - x_6)W_8^2 W_4^0 + (x_3 - x_7)W_8^3 W_4^0 \\
(x_0 - x_4)W_8^0 W_4^0 + (x_1 - x_5)W_8^1 W_4^1 + (x_2 - x_6)W_8^2 W_4^2 + (x_3 - x_7)W_8^3 W_4^3 \\
(x_0 - x_4)W_8^0 W_4^0 + (x_1 - x_5)W_8^1 W_4^2 + (x_2 - x_6)W_8^2 W_4^4 + (x_3 - x_7)W_8^3 W_4^6 \\
(x_0 - x_4)W_8^0 W_4^0 + (x_1 - x_5)W_8^1 W_4^3 + (x_2 - x_6)W_8^2 W_4^6 + (x_3 - x_7)W_8^3 W_4^9 \\
\end{array} \right) & \\
&= \left( \begin{array}[c]
xx_0 W_8^0 W_4^0 + x_1 W_8^1 W_4^0 + x_2 W_8^2 W_4^0 + x_3 W_8^3 W_4^0 - x_4 W_8^0 W_4^0 - x_5 W_8^1 W_4^0 - x_6 W_8^2 W_4^0 - x_7 W_8^3 W_4^0 \\
x_0 W_8^0 W_4^0 + x_1 W_8^1 W_4^2 + x_2 W_8^2 W_4^4 + x_3 W_8^3 W_4^6 - x_4 W_8^0 W_4^0 - x_5 W_8^1 W_4^2 - x_6 W_8^2 W_4^4 - x_7 W_8^3 W_4^6 \\
x_0 W_8^0 W_4^0 + x_1 W_8^1 W_4^3 + x_2 W_8^2 W_4^6 + x_3 W_8^3 W_4^9 - x_4 W_8^0 W_4^0 - x_5 W_8^1 W_4^3 - x_6 W_8^2 W_4^6 - x_7 W_8^3 W_4^9 \\
x_0 W_8^0 W_4^0 + x_1 W_8^1 W_4^4 + x_2 W_8^2 W_4^8 + x_3 W_8^3 W_4^{12} - x_4 W_8^0 W_4^0 - x_5 W_8^1 W_4^4 - x_6 W_8^2 W_4^8 - x_7 W_8^3 W_4^{12}
\end{array} \right) & \\
&= \left( \begin{array}[cccccccc]
WW_8^0 & W_8^1 & W_8^2 & W_8^3 & -W_8^0 & -W_8^1 & -W_8^2 & -W_8^3 \\
W_8^0 & W_8^5 & W_8^{10} & W_8^{15} & -W_8^0 & -W_8^5 & -W_8^{10} & -W_8^{15} \\
W_8^0 & W_8^7 & W_8^{14} & W_8^{21} & -W_8^0 & -W_8^7 & -W_8^{14} & -W_8^{21} \\
W_8^0 & W_8^9 & W_8^{18} & W_8^{27} & -W_8^0 & -W_8^9 & -W_8^{18} & -W_8^{27} \\
\end{array} \right)
\left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) & (\because W_8^c W_4^d = W_8^{c+2d}) \\
&= \left( \begin{array}[cccccccc]
11 & e^{-j\frac{\pi}{4}} & -j & e^{-j\frac{3\pi}{4}} & -1 & e^{-j\frac{5\pi}{4}} & j & e^{-j\frac{7\pi}{4}} \\
1 & e^{-j\frac{3\pi}{4}} & j & e^{-j\frac{\pi}{4}} & -1 & e^{-j\frac{7\pi}{4}} & -j & e^{-j\frac{5\pi}{4}} \\
1 & e^{-j\frac{5\pi}{4}} & -j & e^{-j\frac{7\pi}{4}} & -1 & e^{-j\frac{\pi}{4}} & j & e^{-j\frac{3\pi}{4}} \\
1 & e^{-j\frac{7\pi}{4}} & j & e^{-j\frac{5\pi}{4}} & -1 & e^{-j\frac{3\pi}{4}} & -j & e^{-j\frac{\pi}{4}} \\
\end{array} \right)
\left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) & (\because -1 = W_8^4)
\end{align}
\begin{align}
\boldsymbol{x}^{(0)} &= (x_0 + x_4, x_1 + x_5, x_2 + x_6, x_3 + x_7) \\
\boldsymbol{x}^{(1)} &= \left((x_0 - x_4)W_8^0, (x_1 - x_5)W_8^1, (x_2 - x_6)W_8^2, (x_3 - x_7)W_8^3 \right)
\end{align}
Disons </ div>. Dans ce cas
\left\{ \begin{array}[c]
b\boldsymbol{X}^{(0)} = \mathcal{F}_{\boldsymbol{x}^{(0)}}(k) \\
\boldsymbol{X}^{(1)} = \mathcal{F}_{\boldsymbol{x}^{(1)}}(k)
\end{array} \right.
\quad k = 0, 1, \ldots, 3
\begin{align}
\boldsymbol{X}_{2k}^{(0)} &= \mathcal{F}_{\boldsymbol{x}^{(0)}}(2k) \\
&= \sum_{p=0}^{1}{\left(x_p^{(0)} + x_{p+2}^{(0)} \right) W_{2}^{kp}} \\
\boldsymbol{X}_{2k+1}^{(0)} &= \mathcal{F}_{\boldsymbol{x}^{(0)}}(2k+1) \\
&= \sum_{p=0}^{1}{\left(x_p^{(0)} - x_{p+2}^{(0)} \right)W_4^p W_{2}^{kp}}
\boldsymbol{X}_{2k}^{(1)} &= \mathcal{F}_{\boldsymbol{x}^{(1)}}(2k) \\
&= \sum_{p=0}^{1}{\left(x_p^{(1)} + x_{p+2}^{(1)} \right) W_{2}^{kp}} \\
\boldsymbol{X}_{2k+1}^{(1)} &= \mathcal{F}_{\boldsymbol{x}^{(1)}}(2k+1) \\
&= \sum_{p=0}^{1}{\left(x_p^{(1)} - x_{p+2}^{(1)}\right)W_4^p W_{2}^{kp}}
\end{align}
\begin{align}
\boldsymbol{X}_{2k}^{(0)} &= \left( \begin{array}[c]
XX_{0}^{(0)} \\
X_{2}^{(0)}
\end{array} \right) = \left( \begin{array}[c]
XX_0 \\
X_4
\end{array} \right) & \\
&= \left( \begin{array}[c]
d\displaystyle\sum_{p=0}^{1}{\left(x_p^{(0)} + x_{p+2}^{(0)} \right) W_2^0} \\
\displaystyle\sum_{p=0}^{1}{\left(x_p^{(0)} + x_{p+2}^{(0)} \right) W_2^p}
\end{array} \right) = \left( \begin{array}[c]
(\left(x_0^{(0)} + x_2^{(0)} \right) W_2^0 + \left(x_1^{(0)} + x_3^{(0)} \right) W_2^0 \\
\left(x_0^{(0)} + x_2^{(0)} \right) W_2^0 + \left(x_1^{(0)} + x_3^{(0)} \right) W_2^1
\end{array} \right) & \\
&= \left( \begin{array}[c]
(\{(x_0 + x_4) + (x_2 + x_6)\}W_2^0 + \{(x_1 + x_5) + (x_3 + x_7) \} W_2^0 \\
\{(x_0 + x_4) + (x_2 + x_6)\}W_2^0 + \{(x_1 + x_5) + (x_3 + x_7) \} W_2^1
\end{array} \right) & \\
&= \left( \begin{array}[cccccccc]
WW_2^0 & W_2^0 & W_2^0 & W_2^0 & W_2^0 & W_2^0 & W_2^0 & W_2^0 \\
W_2^0 & W_2^1 & W_2^0 & W_2^1 & W_2^0 & W_2^1 & W_2^0 & W_2^1
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) && \\
&= \left( \begin{array}[cccccccc]
11 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
1 & -1 & 1 & -1 & 1 & -1 & 1 & -1
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) & \\
\boldsymbol{X}_{2k+1}^{(0)} &= \left( \begin{array}[c]
XX_{1}^{(0)} \\
X_{3}^{(0)}
\end{array} \right) = \left( \begin{array}[c]
XX_2 \\
X_6
\end{array} \right) & \\
&= \left( \begin{array}[c]
d\displaystyle\sum_{p=0}^{1}{\left(x_p^{(0)} - x_{p+2}^{(0)} \right)W_4^p W_2^0} \\
\displaystyle\sum_{p=0}^{1}{\left(x_p^{(0)} - x_{p+2}^{(0)} \right)W_4^p W_2^p}
\end{array} \right) = \left( \begin{array}[c]
(\left(x_0^{(0)} - x_2^{(0)} \right)W_4^0 W_2^0 + \left(x_1^{(0)} - x_3^{(0)} \right)W_4^1 W_2^0 \\
\left(x_0^{(0)} - x_2^{(0)} \right)W_4^0 W_2^0 + \left(x_1^{(0)} - x_3^{(0)} \right)W_4^1 W_2^1
\end{array} \right) & \\
&= \left( \begin{array}[c]
(\{(x_0 + x_4) - (x_2 + x_6)\}W_4^0 W_2^0 + \{(x_1 + x_5) - (x_3 + x_7)\}W_4^1 W_2^0 \\
\{(x_0 + x_4) - (x_2 + x_6)\}W_4^0 W_2^0 + \{(x_1 + x_5) - (x_3 + x_7)\}W_4^1 W_2^1
\end{array} \right) & \\
&= \left( \begin{array}[cccccccc]
WW_4^0 & W_4^1 & -W_4^0 & -W_4^1 & W_4^0 & W_4^1 & -W_4^0 & -W_4^1 \\
W_4^0 & W_4^5 & -W_4^0 & -W_4^5 & W_4^0 & W_4^5 & -W_4^0 & -W_4^5
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) & \\
&= \left( \begin{array}[cccccccc]
11 & -j & -1 & j & 1 & -j & -1 & j \\
1 & j & -1 & -j & 1 & j & -1 & -j
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) & (\because W_4^c W_2^d = W_4^{c+2d}, -1 = W_4^2) \\
\boldsymbol{X}_{2k}^{(1)} &= \left( \begin{array}[c]
XX_{0}^{(1)} \\
X_{2}^{(1)}
\end{array} \right) = \left( \begin{array}[c]
XX_1 \\
X_5
\end{array} \right) & \\
&= \left( \begin{array}[c]
d\displaystyle\sum_{p=0}^{1}{\left(x_p^{(1)} + x_{p+2}^{(1)} \right) W_2^0} \\
\displaystyle\sum_{p=0}^{1}{\left(x_p^{(1)} + x_{p+2}^{(1)} \right) W_2^p}
\end{array} \right) = \left( \begin{array}[c]
(\left(x_0^{(1)} + x_2^{(1)} \right) W_2^0 + \left(x_1^{(1)} + x_3^{(1)} \right) W_2^0 \\
\left(x_0^{(1)} + x_2^{(1)} \right) W_2^0 + \left(x_1^{(1)} + x_3^{(1)} \right) W_2^1
\end{array} \right) & \\
&= \left( \begin{array}[c]
(\left\{(x_0 - x_4)W_8^0 + (x_2 - x_6)W_8^2 \right\}W_2^0 + \left\{(x_1 - x_5)W_8^1 + (x_3 - x_7)W_8^3 \right\}W_2^0 \\
\left\{(x_0 - x_4)W_8^0 + (x_2 - x_6)W_8^2 \right\}W_2^0 + \left\{(x_1 - x_5)W_8^1 + (x_3 - x_7)W_8^3 \right\}W_2^1
\end{array} \right) & \\
&= \left( \begin{array}[cccccccc]
WW_8^0 & W_8^1 & W_8^2 & W_8^3 & -W_8^0 & -W_8^1 & -W_8^2 & -W_8^3 \\
W_8^0 & W_8^5 & W_8^2 & W_8^7 & -W_8^0 & -W_8^5 & -W_8^2 & -W_8^7
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) & \\
&= \left( \begin{array}[cccccccc]
11 & e^{-j\frac{\pi}{4}} & -j & e^{-j\frac{3\pi}{4}} & -1 & e^{-j\frac{5\pi}{4}} & j & e^{-j\frac{7\pi}{4}} \\
1 & e^{-j\frac{5\pi}{4}} & -j & e^{-j\frac{7\pi}{4}} & -1 & e^{-j\frac{\pi}{4}} & j & e^{-j\frac{3\pi}{4}}
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) & \\
\boldsymbol{X}_{2k+1}^{(1)} &= \left( \begin{array}[c]
XX_{1}^{(1)} \\
X_{3}^{(1)}
\end{array} \right) = \left( \begin{array}[c]
XX_3 \\
X_7
\end{array} \right) & \\
&= \left( \begin{array}[c]
d\displaystyle\sum_{p=0}^{1}{\left(x_p^{(1)} - x_{p+2}^{(1)} \right)W_4^p W_2^0} \\
\displaystyle\sum_{p=0}^{1}{\left(x_p^{(1)} - x_{p+2}^{(1)} \right)W_4^p W_2^p}
\end{array} \right) = \left( \begin{array}[c]
(\left(x_0^{(1)} - x_2^{(1)} \right)W_4^0 W_2^0 + \left(x_1^{(1)} - x_3^{(1)} \right)W_4^1 W_2^0 \\
\left(x_0^{(1)} - x_2^{(1)} \right)W_4^0 W_2^0 + \left(x_1^{(1)} - x_3^{(1)} \right)W_4^1 W_2^1
\end{array} \right) & \\
&= \left( \begin{array}[c]
(\left\{(x_0 - x_4)W_8^0 - (x_2 - x_6)W_8^2 \right\}W_4^0 W_2^0 + \left\{(x_1 - x_5)W_8^1 - (x_3 - x_7)W_8^3 \right\}W_4^1 W_2^0 \\
\left\{(x_0 - x_4)W_8^0 - (x_2 - x_6)W_8^2 \right\}W_4^0 W_2^0 + \left\{(x_1 - x_5)W_8^1 - (x_3 - x_7)W_8^3 \right\}W_4^1 W_2^1
\end{array} \right) \\
&= \left( \begin{array}[cccccccc]
WW_8^0 & W_8^3 & -W_8^2 & -W_8^5 & -W_8^0 & -W_8^3 & W_8^2 & W_8^5 \\
W_8^0 & W_8^7 & -W_8^2 & -W_8^9 & -W_8^0 & -W_8^7 & W_8^2 & W_8^9
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) & \\
&= \left( \begin{array}[cccccccc]
11 & e^{-j\frac{3\pi}{4}} & j & e^{-j\frac{\pi}{4}} & -1 & e^{-j\frac{7\pi}{4}} & -j & e^{-j\frac{5\pi}{4}} \\
1 & e^{-j\frac{7\pi}{4}} & j & e^{-j\frac{5\pi}{4}} & -1 & e^{-j\frac{3\pi}{4}} & -j & e^{-j\frac{\pi}{4}}
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) & \left(\because W_4^c W_2^d = W_4^{c+2d}, -1 = W_4^2 \right)
\end{align}
\begin{align}
\boldsymbol{x}^{(00)} &= \left(x_0^{(0)} + x_2^{(0)}, x_1^{(0)} + x_3^{(0)} \right) = \big((x_0 + x_4) + (x_2 + x_6), (x_1 + x_5) + (x_3 + x_7) \big) \\
\boldsymbol{x}^{(01)} &= \left( \left(x_0^{(0)} - x_2^{(0)} \right)W_4^0, \left(x_1^{(0)} - x_3^{(0)} \right)W_4^1 \right) = \left(\{(x_0 + x_4) - (x_2 + x_6)\}W_4^0, \{(x_1 + x_5) - (x_3 + x_7)\}W_4^1 \right) \\
\boldsymbol{x}^{(10)} &= \left(x_0^{(1)} + x_2^{(1)}, x_1^{(1)} + x_3^{(1)} \right) = \left((x_0 - x_4)W_8^0 + (x_2 - x_6)W_8^2, (x_1 - x_5)W_8^1 + (x_3 - x_7)W_8^3 \right) \\
\boldsymbol{x}^{(11)} &= \left( \left(x_0^{(0)} - x_2^{(0)} \right)W_4^0, \left(x_1^{(0)} - x_3^{(0)} \right)W_4^1 \right) = \left( \left\{(x_0 - x_4)W_8^0 - (x_2 - x_6)W_8^2 \right\}W_4^0, \left\{(x_1 - x_5)W_8^1 - (x_3 - x_7)W_8^3 \right\}W_4^1 \right)
\end{align}
\left\{ \begin{array}[c]
b\boldsymbol{X}^{(00)} = \mathcal{F}_{\boldsymbol{x}^{(00)}}(k) \\
\boldsymbol{X}^{(01)} = \mathcal{F}_{\boldsymbol{x}^{(01)}}(k) \\
\boldsymbol{X}^{(10)} = \mathcal{F}_{\boldsymbol{x}^{(10)}}(k) \\
\boldsymbol{X}^{(11)} = \mathcal{F}_{\boldsymbol{x}^{(11)}}(k)
\end{array} \right.
\quad k = 0, 1
\begin{align}
\boldsymbol{X}_{2k}^{(00)} &= \mathcal{F}_{\boldsymbol{x}^{(00)}}(2k) \\
&= \sum_{p=0}^{0}{\left(x_p^{(00)} + x_{p+1}^{(00)}\right) W_{1}^{kp}} \\
\boldsymbol{X}_{2k+1}^{(00)} &= \mathcal{F}_{\boldsymbol{x}^{(00)}}(2k+1) \\
&= \sum_{p=0}^{0}{\left(x_p^{(00)} - x_{p+1}^{(00)}\right)W_2^{p} W_{1}^{kp}} \\
\boldsymbol{X}_{2k}^{(01)} &= \mathcal{F}_{\boldsymbol{x}^{(01)}}(2k) \\
&= \sum_{p=0}^{0}{\left(x_p^{(01)} + x_{p+1}^{(01)}\right) W_{1}^{kp}} \\
\boldsymbol{X}_{2k+1}^{(01)} &= \mathcal{F}_{\boldsymbol{x}^{(01)}}(2k+1) \\
&= \sum_{p=0}^{0}{\left(x_p^{(01)} - x_{p+1}^{(01)}\right)W_2^{p} W_{1}^{kp}} \\
\boldsymbol{X}_{2k}^{(10)} &= \mathcal{F}_{\boldsymbol{x}^{(10)}}(2k) \\
&= \sum_{p=0}^{0}{\left(x_p^{(10)} + x_{p+1}^{(10)}\right) W_{1}^{kp}} \\
\boldsymbol{X}_{2k+1}^{(10)} &= \mathcal{F}_{\boldsymbol{x}^{(10)}}(2k+1) \\
&= \sum_{p=0}^{0}{\left(x_p^{(10)} - x_{p+1}^{(10)}\right)W_2^{p} W_{1}^{kp}} \\
\boldsymbol{X}_{2k}^{(11)} &= \mathcal{F}_{\boldsymbol{x}^{(11)}}(2k) \\
&= \sum_{p=0}^{0}{\left(x_p^{(11)} + x_{p+1}^{(11)}\right) W_{1}^{kp}} \\
\boldsymbol{X}_{2k+1}^{(11)} &= \mathcal{F}_{\boldsymbol{x}^{(11)}}(2k+1) \\
&= \sum_{p=0}^{0}{\left(x_p^{(11)} - x_{p+1}^{(11)}\right)W_2^{p} W_{1}^{kp}} \\
\end{align}
\begin{align}
\boldsymbol{X}_{2k}^{(00)} &= X_0 \\
&= \sum_{p=0}^{0}{\left(x_p^{(00)} + x_{p+1}^{(00)}\right) W_{1}^{0}} = \left(x_0^{(00)} + x_{1}^{(00)}\right) W_{1}^{0} \\
&= \left(((x_0 + x_4) + (x_2 + x_6)) + ((x_1 + x_5) + (x_3 + x_7))\right) W_{1}^{0} \\
&= \left( \begin{array}[cccccccc]
WW_{1}^{0} & W_{1}^{0} & W_{1}^{0} & W_{1}^{0} & W_{1}^{0} & W_{1}^{0} & W_{1}^{0} & W_{1}^{0}
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
&= \left( \begin{array}[cccccccc]
11 & 1 & 1 & 1 & 1 & 1 & 1 & 1
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
\boldsymbol{X}_{2k+1}^{(00)} &= X_4 \\
&= \sum_{p=0}^{0}{\left(x_p^{(00)} - x_{p+1}^{(00)}\right)W_2^{p} W_{1}^{kp}} = \left(x_0^{(00)} - x_{1}^{(00)}\right)W_2^0 W_{1}^{0} \\
&= \left(((x_0 + x_4) + (x_2 + x_6)) - ((x_1 + x_5) + (x_3 + x_7))\right) W_2^0 W_{1}^{0} \\
&= \left( \begin{array}[cccccccc]
WW_{2}^{0} & -W_{2}^{0} & W_{2}^{0} & -W_{2}^{0} & W_{2}^{0} & -W_{2}^{0} & W_{2}^{0} & -W_{2}^{0}
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
&= \left( \begin{array}[cccccccc]
11 & -1 & 1 & -1 & 1 & -1 & 1 & -1
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
\boldsymbol{X}_{2k}^{(01)} &= X_2 \\
&= \sum_{p=0}^{0}{\left(x_p^{(01)} + x_{p+1}^{(01)}\right) W_{1}^{kp}} = \left(x_0^{(01)} + x_{1}^{(01)}\right) W_{1}^{0} \\
&= \left(\{(x_0 + x_4) - (x_2 + x_6)\}W_4^0 + \{(x_1 + x_5) - (x_3 + x_7)\}W_4^1 \right) W_{1}^{0} \\
&= \left( \begin{array}[cccccccc]
WW_{4}^{0} & W_{4}^{1} & -W_{4}^{0} & -W_{4}^{1} & W_{4}^{0} & W_{4}^{1} & -W_{4}^{0} & -W_{4}^{1}
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
&= \left( \begin{array}[cccccccc]
11 & -j & -1 & j & 1 & -j & -1 & j \\
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
\boldsymbol{X}_{2k+1}^{(01)} &= X_6 \\
&= \sum_{p=0}^{0}{\left(x_p^{(01)} - x_{p+1}^{(01)}\right)W_2^{p} W_{1}^{kp}} = \left(x_0^{(01)} - x_{1}^{(01)}\right)W_2^0 W_{1}^{0} \\
&= \left(\{(x_0 + x_4) - (x_2 + x_6)\}W_4^0 - \{(x_1 + x_5) - (x_3 + x_7)\}W_4^1 \right) W_2^0 W_{1}^{0} \\
&= \left( \begin{array}[cccccccc]
WW_{4}^{0} & -W_{4}^{1} & -W_{4}^{0} & W_{4}^{1} & W_{4}^{0} & -W_{4}^{1} & -W_{4}^{0} & W_{4}^{1}
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
&= \left( \begin{array}[cccccccc]
11 & j & -1 & -j & 1 & j & -1 & -j
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
\boldsymbol{X}_{2k}^{(10)} &= X_1 \\
&= \sum_{p=0}^{0}{\left(x_p^{(10)} + x_{p+1}^{(10)}\right) W_{1}^{0}} = \left(x_0^{(10)} + x_{1}^{(10)}\right) W_{1}^{0} \\
&= \left(((x_0 - x_4)W_8^0 + (x_2 - x_6)W_8^2) + ((x_1 - x_5)W_8^1 + (x_3 - x_7)W_8^3) \right) W_{1}^{0} \\
&= \left( \begin{array}[cccccccc]
WW_{8}^{0} & W_{8}^{1} & W_{8}^{2} & W_{8}^{3} & -W_{8}^{0} & -W_{8}^{1} & -W_{8}^{2} & -W_{8}^{3}
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
&= \left( \begin{array}[cccccccc]
11 & e^{-j\frac{\pi}{4}} & -j & e^{-j\frac{3\pi}{4}} & -1 & e^{-j\frac{5\pi}{4}} & j & e^{-j\frac{7\pi}{4}}
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
\boldsymbol{X}_{2k+1}^{(10)} &= X_5 \\
&= \sum_{p=0}^{0}{\left(x_p^{(10)} - x_{p+1}^{(10)}\right)W_2^{p} W_{1}^{kp}} = \left(x_0^{(10)} - x_{1}^{(10)}\right)W_2^0 W_{1}^{0} \\
&= \left(\{(x_0 - x_4)W_8^0 + (x_2 - x_6)W_8^2\} - \{(x_1 - x_5)W_8^1 + (x_3 - x_7)W_8^3\}\right) W_2^0 W_{1}^{0} \\
&= \left( \begin{array}[cccccccc]
WW_{8}^{0} & -W_{8}^{1} & W_{8}^{2} & -W_{8}^{3} & -W_{8}^{0} & W_{8}^{1} & -W_{8}^{2} & W_{8}^{3}
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
&= \left( \begin{array}[cccccccc]
11 & e^{-j\frac{5\pi}{4}} & -j & e^{-j\frac{7\pi}{4}} & -1 & e^{-j\frac{\pi}{4}} & j & e^{-j\frac{3\pi}{4}}
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
\boldsymbol{X}_{2k}^{(11)} &= X_3 \\
&= \sum_{p=0}^{0}{\left(x_p^{(11)} + x_{p+1}^{(11)}\right) W_{1}^{0}} = \left(x_0^{(11)} + x_{1}^{(11)}\right) W_{1}^{0} \\
&= \left(\{(x_0 - x_4)W_8^0 - (x_2 - x_6)W_8^2\}W_4^0 + \{(x_1 - x_5)W_8^1 - (x_3 - x_7)W_8^3\}W_4^1 \right) W_{1}^{0} \\
&= \left( \begin{array}[cccccccc]
WW_{8}^{0} & W_{8}^{3} & -W_{8}^{2} & -W_{8}^{5} & -W_{8}^{0} & -W_{8}^{3} & W_{8}^{2} & W_{8}^{5}
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
&= \left( \begin{array}[cccccccc]
11 & e^{-j\frac{3\pi}{4}} & j & e^{-j\frac{\pi}{4}} & -1 & e^{-j\frac{7\pi}{4}} & -j & e^{-j\frac{5\pi}{4}}
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
\boldsymbol{X}_{2k+1}^{(11)} &= X_7 \\
&= \sum_{p=0}^{0}{\left(x_p^{(11)} - x_{p+1}^{(11)}\right)W_2^{p} W_{1}^{kp}} = \left(x_0^{(11)} - x_{1}^{(11)}\right)W_2^0 W_{1}^{0} \\
&= \left(\{(x_0 - x_4)W_8^0 - (x_2 - x_6)W_8^2\}W_4^0 - \{(x_1 - x_5)W_8^1 - (x_3 - x_7)W_8^3\}W_4^1\right) W_2^0 W_{1}^{0} \\
&= \left( \begin{array}[cccccccc]
WW_{8}^{0} & -W_{8}^{3} & -W_{8}^{2} & W_{8}^{5} & -W_{8}^{0} & W_{8}^{3} & W_{8}^{2} -& W_{8}^{5}
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right) \\
&= \left( \begin{array}[cccccccc]
11 & e^{-j\frac{7\pi}{4}} & j & e^{-j\frac{5\pi}{4}} & -1 & e^{-j\frac{3\pi}{4}} & -j & e^{-j\frac{\pi}{4}}
\end{array} \right) \left( \begin{array}[c]
xx_0 \\
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
x_6 \\
x_7
\end{array} \right)
\end{align}
X^{(000)} = X_{2k}^{(00)} = X_0 = X_{(000)_{(2)}} \quad
X^{(001)} = X_{2k+1}^{(00)} = X_4 = X_{(100)_{(2)}} \\
X^{(010)} = X_{2k}^{(01)} = X_2 = X_{(010)_{(2)}} \quad
X^{(011)} = X_{2k+1}^{(01)} = X_6 = X_{(110)_{(2)}} \\
X^{(100)} = X_{2k}^{(10)} = X_1 = X_{(001)_{(2)}} \quad
X^{(101)} = X_{2k+1}^{(10)} = X_5 = X_{(101)_{(2)}} \\
X^{(110)} = X_{2k}^{(11)} = X_3 = X_{(011)_{(2)}} \quad
X^{(111)} = X_{2k+1}^{(11)} = X_7 = X_{(111)_{(2)}}
Cela réduit la quantité de calcul à $ \ mathcal {O} (N \ log_2 N) $. L'ordre logarithmique est très bon dans le monde du calcul, et il garantit que le calcul peut être effectué dans un temps réaliste à moins que la valeur de $ N $ ne soit trop exorbitante. Je vais.
Eh bien, c'est ainsi que la transformation de Fourier à grande vitesse devient possible. Cependant, bien qu'il s'agisse d'une méthode de calcul très efficace dans laquelle l'ordre du montant du calcul du temps est $ \ mathcal {O} (N \ log_2 N) $, elle n'est pas sans inconvénients, et de l'hypothèse, elle devient inefficace en termes de montant de calcul spatial. Je vais. Quoi qu'il en soit, il faut s'aligner sur la puissance de 2. Normalement, le remplissage à zéro est utilisé, mais plus la taille de la cible de conversion est grande, plus il est facile de s'éloigner de la puissance de 2, et il devient nécessaire d'effectuer un remplissage à zéro supplémentaire inutile. Par conséquent, lors de son utilisation, considérez la marge de mémoire et prenez en compte le compromis entre la quantité de calcul temps / espace.
L'appendice a pris 10 fois plus de temps que l'histoire principale ... qui serait utile ... À l'avenir, j'aimerais collecter des informations et les mettre en œuvre à l'avenir tout en compilant des articles liés au FCNN comme celui-ci. Si vous avez des informations, merci de nous le faire savoir!
Recommended Posts