[PYTHON] [Explication pour les débutants] Introduction au traitement du pliage (expliqué dans TensorFlow)

Explication du traitement "pliage" pour les débutants

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>

Aperçu

Aperçu

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. 10.Overview.JPG

Entrée / sortie du processus de convolution

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. Convolve01.JPG

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 ...). Convolve06_images01.JPG

Exemple de filtre

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.

Traitement spécifique

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')

Exemple d'image

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. Convolve02.JPG

Zéro rembourrage

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. Convolve03.JPG

Utilisation de filtres

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. Convolve04_filter.JPG

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

Multipliez et ajoutez dans le formulaire ci-dessous. Convolve05_step01.JPG 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). Convolve05_step02_new.JPG

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. Convolve05_step03_new.JPG

référence

"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é.

Signification de la convolution en mathématiques

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

[Explication pour les débutants] Introduction au traitement du pliage (expliqué dans TensorFlow)
[Explication pour les débutants] Introduction au traitement du pool (expliqué dans TensorFlow)
Les débutants lisent "Introduction à TensorFlow 2.0 pour les experts"
[Pour les débutants] Introduction à la vectorisation dans l'apprentissage automatique
Introduction au Deep Learning (1) --Chainer est expliqué d'une manière facile à comprendre pour les débutants-
[Explication pour les débutants] Tutoriel TensorFlow MNIST (pour les débutants)
Introduction à la base de données Graph Neo4j en Python pour les débutants (pour Mac OS X)
[Explication pour les débutants] Syntaxe et concept de base de TensorFlow
Une introduction à la programmation orientée objet pour les débutants par les débutants
[Introduction à TensorBoard] Visualisez le traitement TensorFlow pour approfondir la compréhension
Essayez de calculer RPN avec Python (pour les débutants)
Introduction à la programmation (Python) TA Tendency pour les débutants
[Introduction pour les débutants] Manipuler MySQL avec Python
[Pour les débutants] Comment utiliser la commande say avec python!
[Introduction à TensorBoard: image] TensorFlow Visualisez le traitement d'image pour approfondir la compréhension
opencv-python Introduction au traitement d'image
Introduction à Private TensorFlow
[Pour les débutants] Résumé de l'entrée standard en Python (avec explication)
Méthode d'apprentissage TensorFlow pour les professionnels des arts libéraux et les débutants en Python
Pour les débutants, comment gérer les erreurs courantes dans les keras
[Python] Introduction à la création de graphiques à l'aide de données de virus corona [Pour les débutants]
~ Conseils pour les débutants de Python présentés avec amour par Pythonista ③ ~
Introduction à Python pour, pendant
Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (5) [Introduction au fonctionnement de la base de données avec le shell Django]
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
Principes de base de Pandas pour les débutants ① Lecture et traitement
Traduction TensorFlow MNIST pour les débutants en ML
Une introduction à Mercurial pour les non-ingénieurs
Principes de base de Pandas pour les débutants ⑧ Traitement des chiffres
Introduction à TensorFlow - Hello World Edition
Tutoriel TensorFlow MNIST pour les débutants en ML
Exécutez unittest en Python (pour les débutants)
Comment exécuter du code TensorFlow 1.0 en 2.0
Premiers pas avec Python pour les non-ingénieurs
Tutoriel TensorFlow -MNIST pour les débutants en ML
Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (4) [Route setting / Introduction to MTV design patterns]
Explication d'approche pour que les débutants soient dans le top 1,5% (0,83732) dans Kaggle Titanic_3
[Pour les débutants] Super introduction aux réseaux de neurones que même les chats peuvent comprendre
Explication d'approche pour que les débutants soient dans le top 1,5% (0,83732) dans Kaggle Titanic_1
[Introduction à Python] Une explication approfondie des types de chaînes de caractères utilisés dans Python!
Explication d'approche pour que les débutants soient dans le top 1,5% (0,83732) dans Kaggle Titanic_2
Introduction au Deep Learning ~ Pliage et mise en commun ~
Une introduction à OpenCV pour l'apprentissage automatique
Probablement l'introduction la plus simple à TensorFlow
Implémentation et description à l'aide de XGBoost pour les débutants
Introduction à discord.py (1er jour) -Préparation pour discord.py-
Notes supplémentaires pour TensorFlow MNIST pour les débutants en ML
Une introduction à Python pour l'apprentissage automatique
Introduction à TensorFlow - Explication des termes et concepts d'apprentissage automatique
Traitement des mémos souvent utilisés dans les pandas (débutants)
Introduction à docker Création d'un environnement ubuntu dans ubuntu
Introduction aux vecteurs: Algèbre linéaire en Python <1>
Implémentation de DQN avec TensorFlow (je voulais ...)
Introduction à la vérification de l'efficacité Chapitre 1 écrit en Python
Une introduction à Python pour les programmeurs en langage C
Analyse des données en Python Résumé des sources que les débutants devraient d'abord consulter