[PYTHON] L'apprentissage automatique pratique avec Scikit-Learn et TensorFlow-TensorFlow a abandonné -

** Apprentissage automatique pratique avec Scikit-Learn et TensorFlow-Scikit-Learn edition- ** est une continuation.

La première moitié (jusqu'au chapitre 8) était principalement consacrée à Scikit-Learn. Dans la seconde moitié (chapitre 9 et suivants), nous passerons à l'histoire de TensorFlow.

Avant d'entrer dans le contenu, je vais résumer les sites qui seront utiles comme mémo. ・ Exemple de code (GitHub)Site officiel de TensorFlowTutoriel PFN ChainerInformations sur le livre

■ Conclusion

En conclusion, considérant que TensorFlow2 est la situation actuelle, j'ai senti que l'apprentissage avec TensorFlow1 n'était pas très efficace.

TensorFlow1 et 2 se sentent comme des choses différentes, et TensorFlow2 semble être bien meilleur. Au début, l'ambiance est comme "TensorFlow se caractérise par le démarrage et la fermeture de la Session." Cependant, dans TensorFlow2, cette Session est abolie ...

C'est comme ça depuis le début de l'édition TensorFlow, donc quand j'essaie de le mettre en pratique, je ne suis pas sûr de ce qui a changé et de ce qui n'a pas changé, et c'est déjà difficile. Même si vous le recherchez, il fondra avec le temps avec juste un peu de recherche.

Je pense qu'il y a une opinion que vous devriez étudier avec TensorFlow1 pour le moment, mais pour mon objectif cette fois, je veux pouvoir l'utiliser dans la pratique, pas pour étudier TensorFlow, donc c'est un peu différent. droite. Je me demande si je vais changer le livre en un qui prend en charge TensorFlow 2 ... (Ce livre n'était pas bon marché)

Cependant, il y a beaucoup de choses à étudier simplement parce que la version est différente. Je le relirai une fois arrivé au stade où la pratique est mise de côté. Actuellement, c'est une phase que je souhaite que vous déplaciez pour le moment, il semble donc que ce sera un rôle de réchauffer la bibliothèque pendant un moment.

Pour le moment, j'ai écrit à Qiita à la moitié du chapitre 9 (le premier chapitre de TensorFlow), donc l'article continue ci-dessous, mais il est subtil de savoir si le contenu merdique est périmé et mérite d'être lu.

À propos, sur les 16 chapitres d'apprentissage automatique pratique de Scikit-Learn et TensorFlow, j'ai perdu la motivation de lire jusqu'à 13 chapitres, donc pour le moment, étudier le Deep Learning est une autre opportunité. Le nombre de bons livres a augmenté, alors j'attendrai qu'il sature.



■ Chapitre 9: Lancez TensorFlow.

Journée d'étude: 21/06/2020

Mes connaissances commencent par "Qu'est-ce que TensorFlow en premier lieu? Une bibliothèque pour le Deep Learning ??" C'est une histoire folle et difficile à lire à partir de ce niveau de connaissances.

Dans le livre

① Doit être un logiciel open source puissant pour le calcul numérique ② Particulièrement adapté pour l'apprentissage automatique à grande échelle ③ Le principe de base est que si vous définissez un graphe de calcul à exécuter en Python, TensorFlow lira le graphe et l'exécutera efficacement avec un code C ++ optimisé. ④ Le plus important est que les graphiques peuvent être traités en parallèle par CPU ou GPU. ⑤ Prend en charge l'informatique distribuée

Il est écrit cela.

Pour être honnête, quand je l'ai lu en un coup d'œil, je me sentais comme "quel bordel", et quelle est la relation entre TensorFlow et le graphique de calcul en premier lieu? J'avais une question. Si vous le lisez attentivement, il semble que TensorFlow suit essentiellement l'ordre de «création d'un graphe de calcul → exécution d'un calcul». Je vois.

・ 9.1 Installation

Il y a un environnement isolé, mais je n'en ai jamais créé car je n'ai jamais eu besoin d'un environnement virtuel. J'ai pensé que c'était une bonne opportunité, alors j'ai fait des recherches et créé un environnement virtuel.

Le livre disait qu'il serait fait avec ** virtualenv **, mais je voulais le faire avec Anaconda, alors je me suis référé au site suivant.

[Python] Création d'un environnement virtuel à l'aide d'Anaconda

J'ai remarqué lors de l'installation de TensorFlow, mais il semble que la version de TensorFlow dans le livre est 1, tandis que la version actuelle est 2. </ font> De plus, il semble que la convivialité soit différente. .. ..

Hmmm, hmmm, euh -...

Eh bien, pour le moment, je me demande si je peux étudier les détails plus tard ou acheter un autre livre en utilisant les tactiques que j'ai découvertes avec l'exemple de code.

・ 9.2 Créer le premier graphique et l'exécuter dans la session

Je ne comprenais pas que "** Rien ne se passe lorsque je fais un graphique de calcul **", alors je l'ai lu encore et encore. C'est juste écrit, mais c'est comme "pourquoi" en boucle.

Du point de vue de l'utilisation de TensorFlow pour la première fois, il était très nouveau de créer d'abord une boîte de variables.

Après avoir créé le graphique, démarrez la session d'exécution du calcul avec la commande ** Session () ** et déclarez explicitement la fin avec ** Session.close () ** lorsque le calcul est terminé. De plus, tout dans la session est exécuté par ** Session.run () **.

Session.png

Cela montre comment utiliser ** avec ** car il y a un risque de faire autre chose même si la session n'est pas fermée. J'aime personnellement celui-ci.

with.png


### * Dans TensorFlow2 ... Il semble que le concept de Session ait disparu.

【référence】 ・ Introduction de tensorflow 2.0 (traduction japonaise)

Par exemple, supposons que $ f = x ^ 2y + y + 2 $ soit $ x = 3 \ ,, , y = 4 $, et que vous souhaitiez calculer à l'aide de ce graphique de calcul.

計算グラフ.png

Dans TensorFlow1,

import tensorflow as tf

#★ Construction d'un graphique de calcul
x = tf.Variable(3, name = "x")
y = tf.Variable(4, name = "y")
f = x*x*y + y +2

#★ Exécution du calcul
sess = tf.Session() #Ouvrez une session TensorFlow
                    #Nécessaire pour effectuer des calculs à l'aide de graphiques de calcul
sess.run(x.initializer) #Initialisation variable
sess.run(y.initializer)
result = sess.run(f) #Évaluation de f
print(result) #Affichage des résultats des calculs
sess.close #Fermer Tensor Flow

Sans parler de la sortie

42

est. Car il n'y a pas de concept de Session TensorFlow2 vous ce n'est pas disponible, mais je me demande comment faites-vous parce que le concept de base n'est pas bien compris. .. .. Pour le moment, vérifiez ceci et cela, et Officiel dit que tf.function est bon, donc je vais l'utiliser.

import tensorflow as tf

#Ensemble de variables
x = tf.Variable(3)
y = tf.Variable(4)

# tf.Créer une fonction avec fonction
@tf.function
def f(x, y):
    return x*x*y + y + 2

result = f(x, y)
print(result)

La sortie ressemble à ceci. Certainement facile à comprendre. Je veux dire, TensorFlow2 ressemble plus à Pyton.

tf.Tensor(42, shape=(), dtype=int32)

・ 9.3 Gestion des graphes

Je n'étais pas sûr de ce que je disais. Je la chercherai plus tard.

・ 9.4 Cycle de vie de la valeur du nœud

C'était comme ça. Tout d'abord, j'ai été impressionné par le fait que TensorFlow récupère automatiquement les dépendances entre les nœuds, puis j'ai été impressionné par le fait que les résultats des calculs ne sont pas réutilisés.

Ne pas être réutilisé signifie, par exemple

w = tf.constant(3)
x = w + 2
y = x + 5
z = x * 3

Pour évaluer $ y $ et $ z $ quand il y a un calcul

1⃣ 1. w = 3 2. x = w + 2 3. y = x + 5

2⃣ 1. w = 3 2. x = w + 2 3. z = x * 3

Il semble que le processus soit terminé. Il semble que $ w = 3 $ et $ x = w + 2 $ sont tous deux nécessaires pour calculer $ y $ et pour calculer $ z $, mais ils sont recalculés. est. En d'autres termes, comme la partie déficit est la même, les humains ne calculent qu'une seule fois, mais TensorFlow calcule deux fois.

Si vous souhaitez tout traiter en même temps, utilisez ** avec **.

with tf.Session() as sess:
    y_val, z_val = sess.run([y, z])

Mais je me demande si c'est aussi TensorFlow2 ...

・ 9.5 Régression linéaire par TensorFlow

Soudainement, TensorFlow effectue une régression linéaire en utilisant l'ensemble de données sur les prix des maisons en Californie. Ce n'est pas seulement une bibliothèque pour le Deep Learning.

・ 9.6 Mise en œuvre de la méthode de descente de gradient

Il explique le calcul de trois types de dégradés. C'est, ・ Calcul manuel du gradient ・ Utiliser la différenciation automatique ・ Utilisez l'optimiseur est. Le manuel est un moyen simple d'écrire du code et de calculer, et la différenciation automatique semble être une excellente chose que TensorFlow calcule automatiquement le gradient de manière efficace. L'optimiseur mentionne seulement "mieux que la différenciation automatique" dans l'explication du livre, mais est-ce une fonction d'optimisation?

・ 9.7 Fourniture de données à l'algorithme d'entraînement

Placeholders - L'utilisation est écrite, mais il semble que les espaces réservés soient supprimés dans TensorFlow2. Je pense que TensorFlow 1 et 2 sont très différents, mais je me demande s'il est vraiment préférable d'étudier avec ce livre.

· 9.8 Sauvegarde et restauration des modèles

Parfois, vous souhaitez restaurer un modèle afin de pouvoir le réutiliser, l'utiliser dans d'autres programmes ou le comparer à d'autres modèles. De plus, si vous souhaitez recommencer à partir du milieu de la formation au lieu de recommencer, vous devez le restaurer. Avec TensorFlow, cette restauration semble être très facile.

Le livre décrit comment utiliser restore (), mais le Official a montré comment utiliser les keras. C'est certainement pratique.

★ Référence ★

[1] [Changements majeurs de TensorFlow 2.0 (S-Analysis)](http://data-analysis-stats.jp/2019/06/09/tensorflow-2-0-%E4%B8%BB%E3% 81% AA% E5% A4% 89% E6% 9B% B4% E7% 82% B9 /) [2] Introduction de tensorflow 2.0 (traduction japonaise) [3] Modifications de TensorFlow 2.0 telles que vues dans le document de conception [4] TensorFlow 2.0 est enfin disponible!

Recommended Posts