Quand j'ai lancé le tutoriel TensorFlow Expert Deep MNIST for Experts, la première chose qui était déroutante était le processus de "convolution". Ce n'est pas un terme général pour un diplômé en arts libéraux, et cela a pris du temps, mais c'est facile si vous le comprenez. En gros, vous pouvez comprendre si vous pouvez appliquer ** quatre règles **. [Explication pour les débutants] Tutoriel TensorFlow Deep MNIST Veuillez vous référer à l'article qui explique le traitement du réseau neuronal convolutif. De plus, l'article "[Explication pour les débutants] Introduction au traitement du pooling (expliqué dans TensorFlow)" explique également le pooling. * Publié en référence à la sortie d'image par TensorBoard (2017/7/27) </ sup>
Comme expliqué dans l'article "[Explication pour les débutants] Tutoriel TensorFlow Deep MNIST", le processus de "pliage" trouve les caractéristiques de l'image. Non seulement les images, mais aussi l'audio et les données sont bien, mais les images sont plus visuelles et plus faciles à comprendre, donc je vais expliquer en utilisant des images.
Le processus de convolution filtre pour faire ressortir les fonctionnalités. En utilisant l'image comme entrée et en utilisant le filtre, l'image pour le nombre de filtres est sortie. Lors de l'utilisation de données MNIST, c'est comme suit.
C'était comme ça quand j'ai organisé les images d'entrée / sortie de traitement par convolution que j'ai placées sur TensorBoard. Les humains ne peuvent pas le comprendre, mais je pense qu'ils peuvent comprendre l'atmosphère (peut-être que les professionnels du traitement d'image peuvent le comprendre ...).
Concernant les filtres, veuillez vous référer à "Liste des filtres de traitement d'image, comparaison" car il s'agit d'un processus d'édition d'images. Il est facile de voir quel type de filtre est réellement appliqué et comment l'image change.
N'utilisez que quatre règles. La partie programme suivante du didacticiel d'expert TensorFlow Deep MNIST for Experts est le processus de convolution. Il en va de même pour la première et la deuxième couche, et il peut être implémenté à ce niveau en utilisant l'API TensorFlow.
#Processus de pliage
def conv2d(x, W):
return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
Comme exemple d'image d'entrée, utilisez une image de barre diagonale de 4 verticales x 4 horizontales x 1 couleur (noir uniquement). La barre diagonale est représentée par 1 et 0.
L'option qui dit padding = 'SAME' s'appelle zéro padding et remplit le périmètre avec des 0. La raison pour laquelle je fais cela est que je veux rendre le Tensor de l'image d'entrée et de l'image de sortie identiques.
La figure ci-dessous montre un exemple de filtre à barres diagonales. Caractérisez avec une barre diagonale au même angle que la barre diagonale.
La partie suivante du tutoriel d'expert TensorFlow Deep MNIST for Experts est le code lorsque le filtre est généré (ici, 5 (vertical) x 5 (horizontal)) × 1 (couleur) × 32 (type)).
W_conv1 = weight_variable([5, 5, 1, 32])
La fonction weight_variable génère la valeur initiale avec un nombre aléatoire normalement distribué avec un écart type de 0,1. Après cela, au fur et à mesure que vous apprenez, il recherchera la valeur de filtre optimale. Pour la fonction de tf.truncated_normal, reportez-vous à Link.
#Valeur pondérée
def weight_variable(shape):
initial = tf.truncated_normal(shape, stddev=0.1) #Écart type 0.Distribution normale, nombre aléatoire de 1
return tf.Variable(initial)
Multipliez et ajoutez dans le formulaire ci-dessous. Après cela, décalez un par un et répétez le calcul. En raison de l'absence de remplissage, l'image du résultat du processus de convolution est la même 4 verticale x 4 horizontale. L'image ci-dessous est un diagramme schématique du deuxième processus de convolution (deuxième en partant de la gauche en haut).
Lorsque le calcul est enfin terminé, le résultat apparaîtra dans la figure ci-dessous. Puisque le filtre de barre diagonale est appliqué à la barre diagonale, il a la même forme.
"Apprentissage automatique que même les diplômés du secondaire peuvent comprendre (7) Folding neural net part 1" et Mathematical background of TensorFlow Tutorial-Deep MNIST for Experts (part 1) 1) est très détaillé.
La convolution est un produit synthétique qui apparaît en mathématiques. Il est décrit en détail dans Wikipedia. L'auteur a étudié en utilisant le matériel pédagogique ["Statistics ** Campus Seminar" (http://amzn.to/2oOPJM2), qui a la réputation de pouvoir développer ses capacités. Pour plus d'informations sur l'étude des mathématiques, veuillez consulter l'article «Comment étudier les mathématiques pour les diplômés des arts libéraux pour comprendre les statistiques et l'apprentissage automatique».
Recommended Posts