[PYTHON] Un amateur a trébuché dans le Deep Learning ❷ fait de zéro Note: Chapitre 1

introduction

"Deep Learning from scratch-The théorie et implémentation du deep learning appris de Python" a été lu, donc la suite "Deep from scratch" Apprentissage ❷-Traitement du langage naturel ", mais le rythme de vie a changé en raison de l'influence de la nouvelle couronne, donc le temps d'étude était bon. Ne peut plus être fait. Jusqu'à présent, c'était une routine quotidienne de s'arrêter dans un café sur le chemin du retour du travail à l'étude, mais en ce qui concerne le télétravail, j'ai fini par vivre dans une bière 5 minutes après le travail: sueur_smile:

Ce n'est pas bon, je vais donc fouetter le corps d'Arafif et reprendre mes études. Comme pour Publié dans le volume précédent, je vais noter ce sur quoi je suis tombé par hasard dans ce livre, donc j'ai fait une erreur. Je vous serais reconnaissant de bien vouloir signaler ces problèmes.

Mon environnement

Comme précédemment, nous allons procéder avec la machine virtuelle de Mac. Le système d'exploitation de la machine virtuelle a été mis à niveau de Mojave vers Catalina.

hôte environnement
dur Mac mini(Late 2012)
OS macOS Mojave version 10.14.6
Infrastructure de virtualisation Parallels Desktop 15 pour Mac Pro Edition version 15.1.4 (47270)
Les invités environnement
OS macOS Catalina version 10.15.4
Environnement de développement Anaconda 2019.10 (Python 3.7)
éditeur Visual Studio Code Version 1.44.2

Il n'est peut-être pas possible d'exécuter une machine virtuelle sur une machine il y a huit ans et de faire du Deep Learning, mais le premier volume a réussi à le faire, alors je vais continuer. Pour plus d'informations sur mon environnement, veuillez vous référer au précédent Notez qu'un amateur a trébuché dans le Deep Learning à partir de zéro: Chapitre 1.

Chapitre 1 Examen du réseau neuronal

Dans la partie «À qui s'adresse le livre?» De la «Préface» de ce livre, «Ceux qui connaissent les réseaux de neurones et Python sont conçus pour pouvoir lire ce livre sans connaître les travaux précédents. Cependant, je pense qu'il est difficile de savoir combien de connaissances préalables devraient être nécessaires.

Ce chapitre 1 contient plus de la moitié du contenu du volume précédent, donc si vous êtes sur le point d'être frustré dans le chapitre 1, commencez par [premier volume](https://www.oreilly.co. Nous vous recommandons de lire jp / books / 9784873117584 /).

Ci-dessous, je vais énumérer les points sur lesquels je suis tombé, y compris les points que j'ai remarqués en raison des différences par rapport au volume précédent.

1.1 Examen des mathématiques et Python

--J'ai récemment appris que le np.dot (x, y) qui apparaît dans "1.1.4 Produit de Vector Inner Product et Matrix Product" peut également être écrit comme x @ y en utilisant l'opérateur @. Je pense que «@» est mieux, mais comme on dit que ce «@» peut être utilisé après Python 3.5, il se peut que la minorité utilise toujours «@». Je ne sais pas.

1.2 Inférence de réseau neuronal

--Dans la mise en œuvre de "1.2.2 Implémentation de la classification et de la propagation vers l'avant en tant que couche", tous les poids sont maintenant répertoriés. Dans le volume précédent, le dictionnaire était stocké avec des clés pour chaque couche et biais (comme «« W1 »» et «« b1 »»), donc la politique de mise en œuvre a été modifiée.

1.3 Apprentissage du réseau neuronal

――Dans l'explication de "1.3.4 Graphique de calcul", les types de nœuds de base expliqués au début ont augmenté par rapport au volume précédent (je me suis précipité dans le télétravail avec le volume précédent dans l'entreprise et je compte sur la mémoire, mais répétez L'explication du nœud, du nœud Sum et du nœud MatMul est-elle apparue comme un nœud de base?). Cela rend également l'explication de "1.3.5.2 Couche affine" plus facile à comprendre. --Dans "1.3.4.5 MatMul node", il y a une explication selon laquelle l'utilisation d'un lecteur 3 points (...) pour l'assignation à un tableau NumPy entraînera une copie complète. Il semble que la politique consiste à mettre l'accent sur l'efficacité et la vitesse d'utilisation de la mémoire plutôt que sur le volume précédent. Cependant, l'explication selon laquelle l'utilisation d'un lecteur à 3 points comme destination de substitution crée une copie complète ne m'est pas venue à l'esprit, alors j'ai un peu enquêté. Apparemment, pour être précis, l'utilisation de slices dans ndarray crée un objet de vue, l'assignation de celui-ci écrase les données d'origine, et il existe un lecteur à 3 points comme abréviation pratique pour les slices. est. Pour les objets de vue, [Explication of NumPy copy and view] de DeepAge (https://deepage.net/features/numpy-copyview.html) est expliqué, et pour le lecteur 3 points, nkmk Spécifiez la dimension du tableau NumPy ndarray en l'omettant avec Ellipsis (...) était facile à comprendre.

1.4 Résolution de problèmes avec un réseau de neurones

image-20200505121346278.png

――Je pense que l'explication de "1.4.4 Trainer class" n'était pas dans le premier volume (le premier volume est toujours dans le télétravail en tant qu'entreprise), mais code source du premier volume -japan / deep-learning-from-scratch / blob / master / common / trainer.py) a déjà été adopté.

1.5 Accélérer le calcul

―― La "précision 1.5.1 bit" a été brièvement expliquée dans le dernier chapitre du volume précédent, mais l'utilisation de la virgule flottante 16 bits a commencé concrètement. Cependant, puisqu'il s'agit d'une période transitoire, la politique est de l'appliquer uniquement lors du stockage des poids pour réduire la capacité. «La même chose est vraie pour" 1.5.2 GPU (CuPy) ", et bien que ce ne soit qu'une explication légère dans le volume précédent, l'utilisation de CuPy a commencé. Cependant, comme il est fondamentalement implémenté par le CPU, il n'y a pas de GPU.

1.6 Résumé

Étant donné que l’accent était mis sur la révision du volume précédent, il n’y avait pas d’obstacle majeur. C'est bien que le code source ait été amélioré de différentes manières.

C'est tout pour ce chapitre. Si vous avez des erreurs, je vous serais reconnaissant de bien vouloir les signaler.

Recommended Posts

Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 5
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 2
Un amateur a trébuché dans le Deep Learning ❷ fait de zéro Note: Chapitre 1
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 4
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 1
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 7
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 5
Un amateur a trébuché dans le Deep Learning à partir de zéro.
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 2
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 7]
Deep learning / Deep learning made from scratch Chapitre 6 Mémo
[Mémo d'apprentissage] Deep Learning fait de zéro [Chapitre 5]
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 6]
Deep learning / Deep learning made from scratch Chapitre 7 Mémo
[Mémo d'apprentissage] Deep Learning fait de zéro [~ Chapitre 4]
Apprentissage profond à partir de zéro
Deep Learning from scratch ① Chapitre 6 "Techniques liées à l'apprentissage"
Apprentissage profond à partir de zéro 1 à 3 chapitres
Deep learning / Deep learning from scratch 2 Chapitre 4 Mémo
Deep learning / Deep learning made from scratch Chapitre 3 Mémo
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 5 Mémo
Créez un environnement pour "Deep Learning from scratch" avec Docker
Apprentissage profond à partir de zéro (calcul des coûts)
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 7 Mémo
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 8 Mémo
Deep learning / Deep learning made from scratch Chapitre 5 Mémo
Deep learning / Deep learning made from scratch Chapitre 4 Mémo
Deep learning / Deep learning from scratch 2 Chapitre 3 Mémo
Mémo d'apprentissage profond créé à partir de zéro
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 6 Mémo
Écrivez vos impressions sur l'édition du framework Deep Learning 3 créée à partir de zéro
Apprentissage profond à partir de zéro (propagation vers l'avant)
Apprentissage profond / Apprentissage profond à partir de zéro 2-Essayez de déplacer GRU
"Deep Learning from scratch" avec Haskell (inachevé)
[Windows 10] Construction de l'environnement "Deep Learning from scratch"
Enregistrement d'apprentissage de la lecture "Deep Learning from scratch"
[Deep Learning from scratch] À propos de l'optimisation des hyper paramètres
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 12) Deep learning
Python vs Ruby «Deep Learning from scratch» Chapitre 2 Circuit logique par Perceptron
Python vs Ruby "Deep Learning from scratch" Chapitre 4 Implémentation de la fonction de perte
Mémo d'auto-apprentissage "Deep Learning from scratch" (glossaire illisible)
Un amateur a essayé le Deep Learning avec Caffe (Introduction)
GitHub du bon livre "Deep Learning from scratch"
Un amateur a essayé le Deep Learning en utilisant Caffe (Practice)
[Mémo d'apprentissage] Apprentissage profond à partir de zéro ~ Mise en œuvre de l'abandon ~
Un amateur a essayé le Deep Learning avec Caffe (Vue d'ensemble)
Résumé Python vs Ruby "Deep Learning from scratch"
Mémo d'auto-apprentissage «Deep Learning from scratch» (10) Classe MultiLayerNet
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 11) CNN
Python vs Ruby "Deep Learning from scratch" Chapitre 3 Implémentation d'un réseau neuronal à 3 couches
Deep Learning from scratch La théorie et la mise en œuvre de l'apprentissage profond appris avec Python Chapitre 3
Version Lua Deep Learning from scratch Part 5.5 [Rendre les fichiers pkl disponibles dans Lua Torch]
[Deep Learning from scratch] J'ai implémenté la couche Affine
[Deep Learning from scratch] J'ai essayé d'expliquer le décrochage
Python vs Ruby "Deep Learning from scratch" Chapitre 3 Graphique de la fonction step, fonction sigmoid, fonction ReLU
Python vs Ruby "Deep Learning from scratch" Chapitre 1 Graphique de la fonction sin et de la fonction cos
[Deep Learning from scratch] Implémentation de la méthode Momentum et de la méthode AdaGrad
Chapitre 3 Réseau de neurones Ne découpez que les bons points de Deeplearning à partir de zéro