Beginnen wir dieses Tutorial mit der Einführung in TensorFlow:
Was ist TensorFlow?
TensorFlow ist eine Open-Source-End-to-End-Plattform zum Erstellen von Anwendungen für maschinelles Lernen. Es ist eine symbolische Mathematikbibliothek, die Datenfluss und differenzierbare Programmierung verwendet, um verschiedene Aufgaben auszuführen, die sich auf das Training und die Inferenz tiefer neuronaler Netze konzentrieren. Entwickler können damit Anwendungen für maschinelles Lernen mit verschiedenen Tools, Bibliotheken und Community-Ressourcen erstellen.
Derzeit ist Googles TensorFlow die bekannteste Deep-Learning-Bibliothek der Welt. Das Google-Produkt verwendet in all seinen Produkten maschinelles Lernen, um die Suchmaschine, die Übersetzung, die Bildunterschrift oder die Empfehlungen zu verbessern.
Um ein konkretes Beispiel zu nennen: Google-Nutzer können die Suche mit AI schneller und verfeinerter erleben. Wenn der Nutzer ein Schlüsselwort in die Suchleiste eingibt, gibt Google eine Empfehlung zum nächsten Wort.
Google möchte maschinelles Lernen nutzen, um die umfangreichen Datensätze zu nutzen und den Nutzern die bestmögliche Erfahrung zu bieten. Drei verschiedene Gruppen verwenden maschinelles Lernen:
- Forscher
- Datenwissenschaftler
- Programmierer.
Sie können alle dasselbe Toolset verwenden, um miteinander zu arbeiten und ihre Effizienz zu verbessern.
Google hat nicht nur irgendwelche Daten; Sie haben den massereichsten Computer der Welt, daher wurde Tensor Flow maßstabsgetreu gebaut. TensorFlow ist eine Bibliothek, die vom Google Brain Team entwickelt wurde, um maschinelles Lernen und die Erforschung tiefer neuronaler Netze zu beschleunigen.
Es wurde für die Ausführung auf mehreren CPUs oder GPUs und sogar auf mobilen Betriebssystemen entwickelt und verfügt über mehrere Wrapper in verschiedenen Sprachen wie Python, C ++ oder Java.
In diesem TensorFlow-Tutorial lernen Sie
- Was ist TensorFlow?
- Geschichte von TensorFlow
- Wie TensorFlow funktioniert
- TensorFlow-Architektur
- Wo kann Tensorflow laufen?
- Einführung in Komponenten von TensorFlow
- Warum ist TensorFlow beliebt?
- Liste der wichtigsten von TensorFlow unterstützten Algorithmen
- Einfaches TensorFlow-Beispiel
- Optionen zum Laden von Daten in TensorFlow
- Erstellen Sie eine Tensorflow-Pipeline
Geschichte von TensorFlow
Vor ein paar Jahren begann Deep Learning, alle anderen Algorithmen für maschinelles Lernen zu übertreffen, wenn eine große Datenmenge bereitgestellt wurde. Google sah, dass es diese tiefen neuronalen Netze nutzen könnte, um seine Dienste zu verbessern:
- Google Mail
- Foto
- Google-Suchmaschine
Sie erstellen ein Framework namens Tensorflow , mit dem Forscher und Entwickler gemeinsam an einem KI-Modell arbeiten können. Einmal entwickelt und skaliert, können viele Benutzer es verwenden.
Es wurde erstmals Ende 2015 veröffentlicht, während die erste stabile Version 2017 erschien. Es ist Open Source unter der Apache Open Source-Lizenz. Sie können es verwenden, ändern und die geänderte Version gegen eine Gebühr weitergeben, ohne etwas an Google zu zahlen.
Als nächstes lernen wir in diesem TensorFlow Deep-Lernprogramm die TensorFlow-Architektur und die Funktionsweise von TensorFlow kennen.
Wie TensorFlow funktioniert
Mit TensorFlow können Sie Datenflussdiagramme und -strukturen erstellen, um zu definieren, wie sich Daten durch ein Diagramm bewegen, indem Sie Eingaben als mehrdimensionales Array namens Tensor verwenden. Sie können ein Flussdiagramm von Operationen erstellen, die an diesen Eingaben ausgeführt werden können, die an einem Ende und am anderen Ende als Ausgabe ausgeführt werden.
TensorFlow-Architektur
Die Tensorflow-Architektur besteht aus drei Teilen:
- Vorverarbeitung der Daten
- Erstellen Sie das Modell
- Trainiere und schätze das Modell
Es wird als Tensorflow bezeichnet, da es als mehrdimensionales Array, auch als Tensoren bezeichnet, eingegeben wird . Sie können eine Art Flussdiagramm von Operationen (als Diagramm bezeichnet) erstellen, die Sie für diese Eingabe ausführen möchten. Die Eingabe geht an einem Ende ein, fließt dann durch dieses System mehrerer Operationen und kommt am anderen Ende als Ausgabe heraus.
Aus diesem Grund wird es TensorFlow genannt, weil der Tensor eine Liste von Operationen durchläuft und dann auf der anderen Seite herauskommt.
Wo kann Tensorflow laufen?
TensorFlow-Hardware- und -Softwareanforderungen können klassifiziert werden
Entwicklungsphase: Dies ist der Zeitpunkt, an dem Sie den Modus trainieren. Das Training wird normalerweise auf Ihrem Desktop oder Laptop durchgeführt.
Ausführungsphase oder Inferenzphase: Nach Abschluss des Trainings kann Tensorflow auf vielen verschiedenen Plattformen ausgeführt werden. Sie können es ausführen
- Desktop unter Windows, MacOS oder Linux
- Cloud als Webdienst
- Mobile Geräte wie iOS und Android
Sie können es auf mehreren Computern trainieren und dann auf einem anderen Computer ausführen, sobald Sie das trainierte Modell haben.
Das Modell kann sowohl auf GPUs als auch auf CPUs trainiert und verwendet werden. GPUs wurden ursprünglich für Videospiele entwickelt. Ende 2010 stellten Stanford-Forscher fest, dass die GPU auch bei Matrixoperationen und Algebra sehr gut ist, so dass sie für diese Art von Berechnungen sehr schnell sind. Deep Learning beruht auf viel Matrixmultiplikation. TensorFlow kann die Matrixmultiplikation sehr schnell berechnen, da sie in C ++ geschrieben ist. Obwohl es in C ++ implementiert ist, kann TensorFlow hauptsächlich von anderen Sprachen, Python, aufgerufen und gesteuert werden.
Ein wichtiges Merkmal von TensorFlow ist schließlich das TensorBoard. Mit dem TensorBoard können Sie grafisch und visuell überwachen, was TensorFlow tut.
Einführung in Komponenten von TensorFlow
Tensor
Der Name von Tensorflow leitet sich direkt von seinem Kern-Framework ab: Tensor . In Tensorflow beinhalten alle Berechnungen Tensoren. Ein Tensor ist ein Vektor oder eine Matrix mit n Dimensionen, die alle Arten von Daten darstellt. Alle Werte in einem Tensor enthalten den gleichen Datentyp mit einer bekannten (oder teilweise bekannten) Form . Die Form der Daten ist die Dimensionalität der Matrix oder des Arrays.
Ein Tensor kann aus den Eingabedaten oder dem Ergebnis einer Berechnung stammen. In TensorFlow werden alle Operationen in einem Diagramm ausgeführt . Das Diagramm ist eine Reihe von Berechnungen, die nacheinander durchgeführt werden. Jede Operation wird eine genannte OP - Knoten und sind miteinander verbunden.
Das Diagramm zeigt die Operationen und Verbindungen zwischen den Knoten. Die Werte werden jedoch nicht angezeigt. Die Kante der Knoten ist der Tensor, dh eine Möglichkeit, die Operation mit Daten zu füllen.
Grafiken
TensorFlow verwendet ein Diagramm-Framework. Das Diagramm sammelt und beschreibt alle Serienberechnungen, die während des Trainings durchgeführt wurden. Die Grafik hat viele Vorteile:
- Es wurde ausgeführt, um auf mehreren CPUs oder GPUs und sogar auf einem mobilen Betriebssystem ausgeführt zu werden
- Die Portabilität des Diagramms ermöglicht es, die Berechnungen für die sofortige oder spätere Verwendung beizubehalten. Das Diagramm kann gespeichert werden, um in Zukunft ausgeführt zu werden.
- Alle Berechnungen im Diagramm werden durchgeführt, indem Tensoren miteinander verbunden werden
- Ein Tensor hat einen Knoten und eine Kante. Der Knoten trägt die mathematische Operation und erzeugt Endpunktausgaben. Die Kanten und Kanten erklären die Eingabe / Ausgabe-Beziehungen zwischen Knoten.
Warum ist TensorFlow beliebt?
TensorFlow ist die beste Bibliothek von allen, da sie für jedermann zugänglich ist. Die Tensorflow-Bibliothek enthält verschiedene APIs für eine maßstabsgetreue Deep-Learning-Architektur wie CNN oder RNN. TensorFlow basiert auf der Berechnung von Graphen. Damit kann der Entwickler den Aufbau des neuronalen Netzwerks mit Tensorboad visualisieren. Dieses Tool ist hilfreich, um das Programm zu debuggen. Schließlich ist Tensorflow so konzipiert, dass es in großem Maßstab eingesetzt werden kann. Es läuft auf CPU und GPU.
Tensorflow erfreut sich bei GitHub im Vergleich zu anderen Deep-Learning-Frameworks der größten Beliebtheit.
Liste der wichtigsten von TensorFlow unterstützten Algorithmen
Unten finden Sie die Liste der unterstützten TensorFlow-Algorithmen:
Derzeit verfügt TensorFlow 1.10 über eine integrierte API für:
- Lineare Regression: tf.estimator.LinearRegressor
- Klassifizierung: tf.estimator.LinearClassifier
- Deep-Learning-Klassifizierung: tf.estimator.DNNClassifier
- Deep Learning Wipe und Deep: tf.estimator.DNNLinearCombinedClassifier
- Booster-Baum-Regression: tf.estimator.BoostedTreesRegressor
- Boosted Tree-Klassifizierung: tf.estimator.BoostedTreesClassifier
Einfaches TensorFlow-Beispiel
import numpy as npimport tensorflow as tf
In den ersten beiden Codezeilen haben wir Tensorflow als tf importiert. Bei Python ist es üblich, einen Kurznamen für eine Bibliothek zu verwenden. Der Vorteil besteht darin, dass Sie nicht den vollständigen Namen der Bibliothek eingeben müssen, wenn Sie diese verwenden müssen. Zum Beispiel können wir Tensorflow als tf importieren und tf aufrufen, wenn wir eine Tensorflow-Funktion verwenden möchten
Lassen Sie uns den elementaren Workflow von Tensorflow anhand einfacher TensorFlow-Beispiele üben. Erstellen wir ein Berechnungsdiagramm, das zwei Zahlen miteinander multipliziert.
Während des Beispiels werden wir X_1 und X_2 miteinander multiplizieren. Tensorflow erstellt einen Knoten zum Verbinden der Operation. In unserem Beispiel heißt es multiplizieren. Wenn der Graph bestimmt ist, multiplizieren Tensorflow-Rechenmaschinen X_1 und X_2.
TensorFlow-Beispiel
Schließlich führen wir eine TensorFlow-Sitzung aus, in der der Berechnungsgraph mit den Werten X_1 und X_2 ausgeführt und das Ergebnis der Multiplikation gedruckt wird.
Definieren wir die Eingangsknoten X_1 und X_2. Wenn wir in Tensorflow einen Knoten erstellen, müssen wir auswählen, welche Art von Knoten erstellt werden soll. Die X1- und X2-Knoten sind Platzhalterknoten. Der Platzhalter weist bei jeder Berechnung einen neuen Wert zu. Wir werden sie als TF-Punkt-Platzhalterknoten erstellen.
Schritt 1: Definieren Sie die Variable
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
Wenn wir einen Platzhalterknoten erstellen, müssen wir den Datentyp übergeben, der hier Zahlen hinzufügt, damit wir einen Gleitkomma-Datentyp verwenden können. Verwenden wir tf.float32. Wir müssen diesem Knoten auch einen Namen geben. Dieser Name wird angezeigt, wenn wir uns die grafischen Visualisierungen unseres Modells ansehen. Benennen wir diesen Knoten X_1, indem wir einen Parameter namens name mit dem Wert X_1 übergeben, und definieren wir nun X_2 auf die gleiche Weise. X_2.
Schritt 2: Definieren Sie die Berechnung
multiply = tf.multiply(X_1, X_2, name = "multiply")
Jetzt können wir den Knoten definieren, der die Multiplikationsoperation ausführt. In Tensorflow können wir dies tun, indem wir einen Knoten tf.multiply erstellen.
Wir werden die X_1- und X_2-Knoten an den Multiplikationsknoten übergeben. Es weist den Tensorflow an, diese Knoten im Berechnungsgraphen zu verknüpfen. Daher bitten wir ihn, die Werte aus x und y zu ziehen und das Ergebnis zu multiplizieren. Geben wir dem Multiplikationsknoten auch den Namen multiplizieren. Es ist die gesamte Definition für unseren einfachen Rechengraphen.
Schritt 3: Führen Sie den Vorgang aus
Um Operationen im Diagramm auszuführen, müssen wir eine Sitzung erstellen. In Tensorflow wird dies von tf.Session () durchgeführt. Nachdem wir eine Sitzung haben, können wir die Sitzung auffordern, Operationen für unser Berechnungsdiagramm auszuführen, indem wir die Sitzung aufrufen. Um die Berechnung auszuführen, müssen wir run verwenden.
Wenn die Additionsoperation ausgeführt wird, wird festgestellt, dass die Werte der Knoten X_1 und X_2 erfasst werden müssen, sodass auch Werte für X_1 und X_2 eingegeben werden müssen. Wir können dies tun, indem wir einen Parameter namens feed_dict angeben. Wir übergeben den Wert 1,2,3 für X_1 und 4,5,6 für X_2.
Wir drucken die Ergebnisse mit print (Ergebnis). Wir sollten 4, 10 und 18 für 1x4, 2x5 und 3x6 sehen
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")multiply = tf.multiply(X_1, X_2, name = "multiply")with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
[ 4. 10. 18.]
Optionen zum Laden von Daten in TensorFlow
Der erste Schritt vor dem Training eines Algorithmus für maschinelles Lernen besteht darin, die Daten zu laden. Es gibt zwei Möglichkeiten, Daten zu laden:
1. Daten in den Speicher laden: Dies ist die einfachste Methode. Sie laden alle Ihre Daten als einzelnes Array in den Speicher. Sie können einen Python-Code schreiben. Diese Codezeilen haben nichts mit Tensorflow zu tun.
2. Tensorflow-Datenpipeline. Tensorflow verfügt über eine integrierte API, mit der Sie die Daten laden, die Operation ausführen und den Algorithmus für maschinelles Lernen problemlos eingeben können. Diese Methode funktioniert sehr gut, insbesondere wenn Sie einen großen Datensatz haben. Beispielsweise sind Bildaufzeichnungen als enorm bekannt und passen nicht in den Speicher. Die Datenpipeline verwaltet den Speicher selbst
Welche Lösung zu verwenden?
Laden Sie Daten in den Speicher
Wenn Ihr Datensatz nicht zu groß ist, dh weniger als 10 Gigabyte, können Sie die erste Methode verwenden. Die Daten können in den Speicher passen. Sie können eine berühmte Bibliothek namens Pandas verwenden, um CSV-Dateien zu importieren. Weitere Informationen zu Pandas finden Sie im nächsten Tutorial.
Laden Sie Daten mit der Tensorflow-Pipeline
Die zweite Methode funktioniert am besten, wenn Sie einen großen Datensatz haben. Wenn Sie beispielsweise einen Datensatz von 50 Gigabyte haben und Ihr Computer nur 16 Gigabyte Speicher hat, stürzt der Computer ab.
In dieser Situation müssen Sie eine Tensorflow-Pipeline erstellen. Die Pipeline lädt die Daten im Batch oder in kleinen Blöcken. Jede Charge wird in die Pipeline verschoben und ist für das Training bereit. Das Erstellen einer Pipeline ist eine hervorragende Lösung, da Sie damit paralleles Rechnen verwenden können. Dies bedeutet, dass Tensorflow das Modell über mehrere CPUs hinweg trainiert. Es fördert die Berechnung und ermöglicht das Training eines leistungsfähigen neuronalen Netzwerks.
In den nächsten Tutorials erfahren Sie, wie Sie eine wichtige Pipeline für Ihr neuronales Netzwerk erstellen.
Kurz gesagt, wenn Sie einen kleinen Datensatz haben, können Sie die Daten mit der Pandas-Bibliothek in den Speicher laden.
Wenn Sie über einen großen Datensatz verfügen und mehrere CPUs verwenden möchten, können Sie bequemer mit der Tensorflow-Pipeline arbeiten.
Erstellen Sie eine Tensorflow-Pipeline
Im vorherigen Beispiel fügen wir manuell drei Werte für X_1 und X_2 hinzu. Jetzt werden wir sehen, wie Daten in Tensorflow geladen werden.
Schritt 1) Erstellen Sie die Daten
Lassen Sie uns zunächst die Numpy-Bibliothek verwenden, um zwei zufällige Werte zu generieren.
import numpy as npx_input = np.random.sample((1,2))print(x_input)
[[0.8835775 0.23766977]]
Schritt 2) Erstellen Sie den Platzhalter
Wie im vorherigen Beispiel erstellen wir einen Platzhalter mit dem Namen X. Wir müssen die Form des Tensors explizit angeben. In diesem Fall laden wir ein Array mit nur zwei Werten. Wir können die Form als Form = [1,2] schreiben.
# using a placeholderx = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
Schritt 3) Definieren Sie die Datensatzmethode
Als nächstes müssen wir den Datensatz definieren, in den wir den Wert des Platzhalters x einfügen können. Wir müssen die Methode tf.data.Dataset.from_tensor_slices verwenden
dataset = tf.data.Dataset.from_tensor_slices(x)
Schritt 4) Erstellen Sie die Pipeline
In Schritt vier müssen wir die Pipeline initialisieren, in der die Daten fließen. Wir müssen einen Iterator mit make_initializable_iterator erstellen. Wir nennen es Iterator. Dann müssen wir diesen Iterator aufrufen, um den nächsten Datenstapel get_next zu füttern. Wir nennen diesen Schritt get_next. Beachten Sie, dass es in unserem Beispiel nur einen Datenstapel mit nur zwei Werten gibt.
iterator = dataset.make_initializable_iterator()get_next = iterator.get_next()
Schritt 5) Führen Sie den Vorgang aus
Der letzte Schritt ähnelt dem vorherigen Beispiel. Wir initiieren eine Sitzung und führen den Operationsiterator aus. Wir füttern den feed_dict mit dem von numpy generierten Wert. Diese beiden Werte füllen den Platzhalter x. Dann führen wir get_next aus, um das Ergebnis zu drucken.
with tf.Session() as sess:# feed the placeholder with datasess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]
Zusammenfassung
TensorFlow bedeutet: TensorFlow ist die bekannteste Deep-Learning-Bibliothek der letzten Jahre. Ein Praktiker, der TensorFlow verwendet, kann jede tiefe Lernstruktur wie CNN, RNN oder ein einfaches künstliches neuronales Netzwerk aufbauen.
TensorFlow wird hauptsächlich von Akademikern, Startups und großen Unternehmen verwendet. Google verwendet TensorFlow in fast allen täglichen Google-Produkten, einschließlich Google Mail, Foto und Google Search Engine.
Das Google Brain-Team hat TensorFlow entwickelt, um die Lücke zwischen Forschern und Produktentwicklern zu schließen. 2015 machten sie TensorFlow öffentlich; es wird immer beliebter. Heutzutage ist TensorFlow die Deep-Learning-Bibliothek mit den meisten Repositories auf GitHub.
Praktiker verwenden Tensorflow, da es einfach ist, es in großem Maßstab bereitzustellen. Es wurde für die Arbeit in der Cloud oder auf mobilen Geräten wie iOs und Android entwickelt.
Tensorflow funktioniert in einer Sitzung. Jede Sitzung wird durch ein Diagramm mit unterschiedlichen Berechnungen definiert. Ein einfaches Beispiel kann sein, mit Zahl zu multiplizieren. In Tensorflow sind drei Schritte erforderlich:
- Definieren Sie die Variable
X_1 = tf.placeholder(tf.float32, name = "X_1")X_2 = tf.placeholder(tf.float32, name = "X_2")
- Definieren Sie die Berechnung
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Führen Sie die Operation aus
with tf.Session() as session:result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]})print(result)
Eine gängige Praxis in Tensorflow besteht darin, eine Pipeline zum Laden der Daten zu erstellen. Wenn Sie diese fünf Schritte ausführen, können Sie Daten in TensorFLow laden
- Erstellen Sie die Daten
import numpy as npx_input = np.random.sample((1,2))print(x_input)
- Erstellen Sie den Platzhalter
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Definieren Sie die Dataset-Methode
dataset = tf.data.Dataset.from_tensor_slices(x)
- Erstellen Sie die Pipeline
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Führen Sie das Programm aus
with tf.Session() as sess:sess.run(iterator.initializer, feed_dict={ x: x_input })print(sess.run(get_next))