[PYTHON] Praktisches maschinelles Lernen mit Scikit-Learn und TensorFlow-TensorFlow gab auf-

** Praktisches maschinelles Lernen mit Scikit-Learn und TensorFlow-Scikit-Learn Edition- ** ist eine Fortsetzung.

In der ersten Hälfte (bis Kapitel 8) ging es hauptsächlich um Scikit-Learn. In der zweiten Hälfte (Kapitel 9 und danach) werden wir mit der Geschichte von TensorFlow fortfahren.

Bevor ich auf den Inhalt eingehe, fasse ich die Websites zusammen, die als Memo hilfreich sind. ・ Beispielcode (GitHub)Offizielle Website von TensorFlowPFN Chainer TutorialBuchinformationen

■ Fazit

In Anbetracht der Tatsache, dass TensorFlow2 die aktuelle Situation ist, war ich der Meinung, dass das Lernen mit TensorFlow1 nicht sehr effizient war.

TensorFlow1 und 2 fühlen sich wie verschiedene Dinge an, und TensorFlow2 scheint viel besser zu sein. Zu Beginn ist die Atmosphäre wie folgt: "TensorFlow ist durch Starten und Schließen der Sitzung gekennzeichnet." In TensorFlow2 wird diese Sitzung jedoch abgeschafft ...

Es ist seit Beginn der TensorFlow-Edition so. Wenn ich also versuche, es in die Praxis umzusetzen, bin ich mir nicht sicher, was sich geändert hat und was sich nicht geändert hat, und es ist bereits schwierig. Selbst wenn Sie es nachschlagen, wird es mit nur ein wenig Recherche im Laufe der Zeit schmelzen.

Ich denke, es gibt eine Meinung, dass Sie vorerst mit TensorFlow1 studieren sollten, aber diesmal möchte ich es für meinen Zweck in der Praxis anwenden können, nicht um TensorFlow zu studieren, also ist das etwas anders. richtig. Ich frage mich, ob ich das Buch in ein Buch ändern werde, das TensorFlow 2 unterstützt ... (Dieses Buch war nicht billig)

Es gibt jedoch viele Dinge zu studieren, nur weil die Version anders ist. Ich werde es noch einmal lesen, sobald ich das Stadium erreicht habe, in dem die Übung eingestellt ist. Derzeit ist es eine Phase, in der Sie sich vorerst bewegen sollen. Es scheint also eine Rolle zu sein, das Bücherregal für eine Weile aufzuwärmen.

Vorläufig habe ich in der Mitte von Kapitel 9 (dem ersten Kapitel von TensorFlow) an Qiita geschrieben, daher wird der Artikel weiter unten fortgesetzt, aber es ist subtil, ob der beschissene Inhalt veraltet und lesenswert ist.

Übrigens habe ich von allen 16 Kapiteln des praktischen maschinellen Lernens von Scikit-Learn und TensorFlow meine Motivation verloren, bis zu 13 Kapitel zu lesen. Daher ist das Studium des Deep Learning vorerst eine weitere Gelegenheit. Die Anzahl der guten Bücher hat zugenommen, daher werde ich warten, bis sie gesättigt sind.



■ Kapitel 9: Starten Sie TensorFlow.

Studientag: 2020/6/21

Mein Wissen beginnt mit der Frage: "Was ist TensorFlow überhaupt? Eine Bibliothek für Deep Learning?" Es ist eine verrückte Geschichte, und es ist schwer, von diesem Wissensstand zu lesen.

Im Buch

① Muss eine leistungsstarke Open Source-Software für die numerische Berechnung sein ② Speziell für maschinelles Lernen in großem Maßstab abgestimmt ③ Wenn Sie ein Berechnungsdiagramm definieren, das in Python ausgeführt werden soll, liest TensorFlow das Diagramm und führt es mit optimiertem C ++ - Code effizient aus. ④ Das Wichtigste ist, dass Diagramme von der CPU oder GPU parallel verarbeitet werden können. ⑤ Unterstützt verteiltes Rechnen

Es steht geschrieben, dass.

Um ehrlich zu sein, als ich es auf einen Blick las, fühlte es sich wie "was für ein Durcheinander" an, und wie ist die Beziehung zwischen TensorFlow und dem Berechnungsdiagramm überhaupt? Ich hatte eine Frage. Wenn Sie es sorgfältig lesen, scheint TensorFlow im Wesentlichen der Reihenfolge "Erstellen eines Berechnungsdiagramms → Ausführen einer Berechnung" zu folgen. Aha.

・ 9.1 Installation

Es gibt eine isolierte Umgebung, aber ich habe nie eine erstellt, weil ich nie eine virtuelle Umgebung benötigt habe. Ich dachte, dies sei eine gute Gelegenheit, also habe ich dies untersucht und eine virtuelle Umgebung erstellt.

Das Buch sagte, dass es mit ** virtualenv ** gemacht werden würde, aber ich wollte es mit Anaconda machen, also verwies ich auf die folgende Seite.

[Python] Erstellen einer virtuellen Umgebung mit Anaconda

Ich habe bei der Installation von TensorFlow festgestellt, dass die Version von TensorFlow im Buch 1 ist, während die aktuelle Version 2 ist. </ font> Darüber hinaus scheint die Benutzerfreundlichkeit unterschiedlich zu sein. .. ..

Hmmm, hmmm, ähm ...

Nun, vorerst frage ich mich, ob ich die Details später studieren oder ein anderes Buch kaufen kann, indem ich die Taktik verwende, die ich mit dem Beispielcode herausgefunden habe.

・ 9.2 Erstellen des ersten Diagramms und Ausführen in der Sitzung

Ich konnte nicht verstehen, dass "** nichts passiert, wenn ich ein Berechnungsdiagramm mache **", also habe ich es immer wieder gelesen. Es ist nur geschrieben, aber es fühlt sich an wie "Warum" geloopt.

Unter dem Gesichtspunkt der erstmaligen Verwendung von TensorFlow war es sehr neu, zunächst eine Box mit Variablen zu erstellen.

Starten Sie nach dem Erstellen des Diagramms die Ausführungssitzung für die Berechnung mit dem Befehl ** Session () ** und deklarieren Sie das Ende explizit mit ** Session.close () **, wenn die Berechnung abgeschlossen ist. Außerdem wird alles in der Sitzung von ** Session.run () ** ausgeführt.

Session.png

Dies zeigt, wie ** mit ** verwendet wird, da das Risiko besteht, andere Dinge zu tun, obwohl die Sitzung nicht geschlossen ist. Ich persönlich mag diesen.

with.png


### * In TensorFlow2 ... Es scheint, dass das Konzept der Sitzung verschwunden ist.

【Referenz】 ・ Einführung von Tensorflow 2.0 (japanische Übersetzung)

Angenommen, $ f = x ^ 2y + y + 2 $ ist $ x = 3 \ ,, , y = 4 $, und Sie möchten mit diesem Berechnungsdiagramm berechnen.

計算グラフ.png

In TensorFlow1,

import tensorflow as tf

#★ Aufbau des Berechnungsgraphen
x = tf.Variable(3, name = "x")
y = tf.Variable(4, name = "y")
f = x*x*y + y +2

#★ Berechnung durchführen
sess = tf.Session() #Öffnen Sie eine TensorFlow-Sitzung
                    #Erforderlich, um Berechnungen mithilfe von Berechnungsdiagrammen durchzuführen
sess.run(x.initializer) #Variable Initialisierung
sess.run(y.initializer)
result = sess.run(f) #Bewertung von f
print(result) #Anzeige der Berechnungsergebnisse
sess.close #Tensorfluss schließen

Ganz zu schweigen von der Ausgabe

42

ist. Da es kein Konzept für Session TensorFlow2 gibt, ist dies nicht verfügbar, aber ich frage mich, wie Sie es tun, weil das Grundkonzept nicht gut verstanden wird. .. .. Vorerst habe ich dies und das überprüft und verwendet, weil in Official geschrieben war, dass die Funktion gut ist.

import tensorflow as tf

#Satz von Variablen
x = tf.Variable(3)
y = tf.Variable(4)

# tf.Erstellen Sie eine Funktion mit Funktion
@tf.function
def f(x, y):
    return x*x*y + y + 2

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

Die Ausgabe sieht so aus. Sicher leicht zu verstehen. Ich meine, TensorFlow2 ähnelt eher Pyton.

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

・ 9.3 Grafikverwaltung

Ich war mir nicht sicher, was ich sagte. Ich werde es später nachschlagen.

・ 9.4 Lebenszyklus des Knotenwerts

Es war so. Zunächst war ich beeindruckt von der Tatsache, dass TensorFlow die Abhängigkeiten zwischen Knoten automatisch aufnimmt, und dann war ich beeindruckt von der Tatsache, dass die Berechnungsergebnisse nicht wiederverwendet werden.

Nicht wiederverwendet zu werden bedeutet zum Beispiel

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

Um $ y $ und $ z $ zu bewerten, wenn eine Berechnung vorliegt

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

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

Es scheint, dass der Prozess abgeschlossen ist. Es scheint, dass $ w = 3 $ und $ x = w + 2 $ beide für die Berechnung von $ y $ und für die Berechnung von $ z $ erforderlich sind, aber sie werden neu berechnet. ist. Mit anderen Worten, da der Defizitanteil der gleiche ist, berechnet der Mensch nur einmal, TensorFlow jedoch zweimal.

Wenn Sie alles auf einmal verarbeiten möchten, verwenden Sie ** mit **.

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

Aber ich frage mich, ob dies auch TensorFlow2 ist ...

・ 9.5 Lineare Regression durch TensorFlow

Plötzlich führt TensorFlow eine lineare Regression mit dem kalifornischen Eigenheimpreisdatensatz durch. Es ist nicht nur eine Bibliothek für Deep Learning.

・ 9.6 Implementierung der Gradientenabstiegsmethode

Es wird die Berechnung von drei Arten von Verläufen erläutert. Das ist, ・ Manuelle Gradientenberechnung ・ Verwenden Sie die automatische Differenzierung ・ Verwenden Sie den Optimierer ist. Das Handbuch ist eine einfache Möglichkeit, den Code zu schreiben und zu berechnen, und die automatische Differenzierung scheint eine hervorragende Sache zu sein, mit der TensorFlow den Gradienten auf effiziente Weise automatisch berechnet. Der Optimierer sagt in der Erklärung des Buches nur "besser als automatische Differenzierung", aber ist es eine Funktion zur Optimierung?

・ 9.7 Bereitstellung von Daten für den Trainingsalgorithmus

Platzhalter - Die Verwendung ist geschrieben, aber es scheint, dass Platzhalter in TensorFlow2 abgeschafft werden. Ich habe das Gefühl, dass TensorFlow 1 und 2 sehr unterschiedlich sind, aber ich frage mich, ob es wirklich am besten ist, mit diesem Buch zu lernen.

· 9.8 Modelle speichern und wiederherstellen

Manchmal möchten Sie ein Modell wiederherstellen, damit Sie es wiederverwenden, in anderen Programmen verwenden oder mit anderen Modellen vergleichen können. Wenn Sie von der Mitte des Trainings aus neu beginnen möchten, anstatt von vorne zu beginnen, müssen Sie es wiederherstellen. Mit TensorFlow scheint diese Wiederherstellung sehr einfach zu sein.

Das Buch beschreibt die Verwendung von restore (), aber der Official zeigte die Verwendung von Keras. Das ist sicherlich praktisch.

★ Referenz ★

[1] [TensorFlow 2.0-Hauptänderungen (S-Analyse)](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] Einführung von Tensorflow 2.0 (japanische Übersetzung) [3] Änderungen in TensorFlow 2.0 aus dem Designdokument [4] TensorFlow 2.0 endlich veröffentlicht!

Recommended Posts