Was ist TensorFlow? Wie es funktioniert? Einführung & Architektur
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 Machine-Learning-Anwendungen. Es handelt sich um eine symbolische Mathematikbibliothek, die Datenfluss und differenzierbare Programmierung verwendet, um verschiedene Aufgaben auszuführen, die sich auf das Training und die Inferenz tiefer neuronaler Netzwerke konzentrieren. Entwickler können damit Machine-Learning-Anwendungen mithilfe verschiedener Tools, Bibliotheken und Community-Ressourcen erstellen.
Die derzeit bekannteste Deep-Learning-Bibliothek der Welt ist TensorFlow von Google. Das Google-Produkt nutzt in allen seinen Produkten maschinelles Lernen, um die Suchmaschine, die Übersetzung, Bildunterschriften oder Empfehlungen zu verbessern.
TensorFlow-Beispiel
Um ein konkretes Beispiel zu nennen: Google-Nutzer können mit KI ein schnelleres und verfeinertes Sucherlebnis erleben. Wenn der Nutzer ein Schlüsselwort in die Suchleiste eingibt, gibt Google eine Empfehlung, welches das nächste Wort sein könnte.

Google möchte maschinelles Lernen nutzen, um seine riesigen Datensätze zu nutzen und den Nutzern das beste Erlebnis zu bieten. Drei verschiedene Gruppen nutzen maschinelles Lernen:
- Forscher
- Daten Analysten
- Programmierer
Sie alle können dasselbe Toolset nutzen, um miteinander zusammenzuarbeiten und ihre Effizienz zu verbessern.
Google verfügt nicht nur über irgendwelche Daten; Sie verfügen über den größten Computer der Welt, daher wurde Tensor Flow maßstabsgetreu entwickelt. TensorFlow ist eine vom Google Brain Team entwickelte Bibliothek, um maschinelles Lernen und die Erforschung tiefer neuronaler Netzwerke zu beschleunigen.
Es wurde für die Ausführung auf mehreren CPUs oder GPUs und sogar mobilen Betriebssystemen entwickelt und verfügt über mehrere Wrapper in mehreren Sprachen wie Python, C++ or Java.
Geschichte von TensorFlow
Vor ein paar Jahren begann Deep Learning bei der Verarbeitung riesiger Datenmengen alle anderen maschinellen Lernalgorithmen zu übertreffen. Google erkannte, dass es diese tiefen neuronalen Netzwerke nutzen könnte, um seine Dienste zu verbessern:
- Google Mail
- Foto
- Google-Suchmaschine
Sie bauen ein Framework namens Tensorflow um Forscher und Entwickler gemeinsam an einem KI-Modell arbeiten zu lassen. Sobald es entwickelt und skaliert ist, kann es von vielen Menschen genutzt werden.
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 weiterverbreiten, ohne etwas an Google zu zahlen.
Als Nächstes lernen wir in diesem TensorFlow Deep Learning-Tutorial die TensorFlow-Architektur kennen und erfahren, wie TensorFlow funktioniert.
So funktioniert TensorFlow
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 übernehmen. Sie können damit ein Flussdiagramm von Operationen erstellen, die an diesen Eingaben ausgeführt werden können, das an einem Ende eingeht und am anderen Ende als Ausgabe zurückkommt.
TensorFlow Architektur
Die Tensorflow-Architektur besteht aus drei Teilen:
- Vorverarbeitung der Daten
- Erstellen Sie das Modell
- Trainieren und schätzen Sie das Modell
Es wird Tensorflow genannt, weil es Eingaben als mehrdimensionales Array entgegennimmt, auch bekannt als Tensoren. Sie können eine Art konstruieren Flussdiagramm von Operationen (Graph genannt), die Sie mit dieser Eingabe durchfü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 heißt es TensorFlow, denn der Tensor durchläuft beim Eingehen eine Liste von Operationen und kommt dann auf der anderen Seite wieder heraus.
Wo kann Tensorflow laufen?
TensorFlow-Hardware und Software Anforderungen kann klassifiziert werden in
Entwicklungsphase: In dieser Phase trainieren Sie den Modus. Die Schulung erfolgt in der Regel auf Ihrem Desktop oder Laptop.
Ausführungsphase oder Inferenzphase: Sobald das Training abgeschlossen ist, kann Tensorflow auf vielen verschiedenen Plattformen ausgeführt werden. Sie können es weiter ausführen
- Desktop läuft Windows, macOS oder Linux
- Cloud als Webservice
- Mobile Geräte wie iOS und Android
Sie können es auf mehreren Computern trainieren und es 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 Forscher der Stanford University fest, dass GPUs auch sehr gut bei Matrixoperationen und Algebra sind, sodass sie diese Art von Berechnungen sehr schnell durchführen können. Deep Learning basiert auf einer Menge Matrixmultiplikation. TensorFlow ist sehr schnell bei der Berechnung der Matrixmultiplikation, da es in C++. Obwohl es in C++, TensorFlow kann hauptsächlich von anderen Sprachen aus aufgerufen und gesteuert werden, Python.
Ein wesentliches Merkmal von TensorFlow ist schließlich das TensorBoard. Der TensorBoard ermöglicht die grafische und visuelle Überwachung der Aktivitäten von TensorFlow.
TensorFlow-Komponenten
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 or Matrix von n-Dimensionen, die alle Arten von Daten darstellen. Alle Werte in einem Tensor enthalten identische Datentypen mit einem bekannten (oder teilweise bekannten) gestalten. 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 innerhalb eines Graph. Der Graph ist eine Reihe von Berechnungen, die nacheinander stattfinden. Jede Operation wird als op-Knoten und sind miteinander verbunden.
Der Graph stellt die Operationen und Verbindungen zwischen den Knoten dar. Die Werte werden jedoch nicht angezeigt. Der Rand der Knoten ist der Tensor, also eine Möglichkeit, die Operation mit Daten zu füllen.
Graphs
TensorFlow nutzt ein Graph-Framework. Das Diagramm erfasst und beschreibt alle während des Trainings durchgeführten Reihenberechnungen. Die Grafik hat viele Vorteile:
- Es wurde gemacht, um auf mehreren CPUs oder GPUs und sogar mobilen Betriebssystemen zu laufen
- Die Portabilität des Diagramms ermöglicht es, die Berechnungen für die sofortige oder spätere Verwendung aufzubewahren. Das Diagramm kann gespeichert werden, um es später auszuführen.
- Alle Berechnungen im Diagramm werden durch die Verbindung von Tensoren durchgeführt
- Ein Tensor hat einen Knoten und eine Kante. Der Knoten führt die mathematische Operation aus und erzeugt Endpunktausgaben. Die Kanten erklären die Eingabe-/Ausgabebeziehungen zwischen Knoten.
Warum ist TensorFlow beliebt?
TensorFlow ist die beste Bibliothek von allen, da sie so konzipiert ist, dass sie für jeden zugänglich ist. Die Tensorflow-Bibliothek enthält verschiedene APIs zum Erstellen von Deep-Learning-Architekturen wie CNN oder RNN in großem Maßstab. TensorFlow basiert auf Graphenberechnungen; es ermöglicht dem Entwickler, den Aufbau des neuronalen Netzwerks mit Tensorboad zu visualisieren. Dieses Tool ist hilfreich beim Debuggen des Programms. Schließlich ist Tensorflow so konzipiert, dass es in großem Maßstab bereitgestellt werden kann. Es läuft auf CPU und GPU.
Tensorflow erfreut sich auf GitHub im Vergleich zu den anderen Deep-Learning-Frameworks der größten Beliebtheit.
TensorFlow Algorithms
Nachfolgend sind die von TensorFlow unterstützten Algorithmen aufgeführt:
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
So funktionieren Berechnungen in TensorFlow
import numpy as np import tensorflow as tf
In den ersten beiden Codezeilen haben wir Tensorflow als tf importiert. Mit Pythonist es üblich, für eine Bibliothek einen Kurznamen zu verwenden. Der Vorteil besteht darin, dass wir nicht den vollständigen Namen der Bibliothek eingeben müssen, wenn wir sie verwenden müssen. Beispielsweise können wir Tensorflow als tf importieren und tf aufrufen, wenn wir eine Tensorflow-Funktion verwenden möchten
Lassen Sie uns den elementaren Arbeitsablauf von Tensorflow mit einfachen TensorFlow-Beispielen üben. Lassen Sie uns einen Berechnungsgraphen erstellen, der zwei Zahlen miteinander multipliziert.
Im Beispiel multiplizieren wir X_1 und X_2 miteinander. Tensorflow erstellt einen Knoten, um die Operation zu verbinden. In unserem Beispiel heißt dieser „Multiplizieren“. Wenn der Graph bestimmt ist, multiplizieren die Tensorflow-Rechenmaschinen X_1 und X_2 miteinander.
Abschließend führen wir eine TensorFlow-Sitzung durch, die den Rechengraphen mit den Werten von X_1 und X_2 ausführt und das Ergebnis der Multiplikation ausgibt.
Definieren wir die Eingabeknoten 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 Knoten X1 und X2 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ügen wird, sodass wir einen Gleitkomma-Datentyp verwenden können. Nehmen 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. Nennen 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 durchführt. In Tensorflow können wir das tun, indem wir einen tf.multiply-Knoten erstellen.
Wir werden die Knoten X_1 und X_2 an den Multiplikationsknoten übergeben. Es weist Tensorflow an, diese Knoten im Rechendiagramm zu verknüpfen, daher fordern wir es auf, die Werte von x und y abzurufen und das Ergebnis zu multiplizieren. Geben wir dem Multiplikationsknoten auch den Namen multiply. Es ist die vollständige Definition für unseren einfachen Rechengraphen.
Schritt 3: Ausführen des Vorgangs
Um Operationen im Graphen auszuführen, müssen wir eine Sitzung erstellen. In Tensorflow geschieht dies durch tf.Session(). Da wir nun eine Sitzung haben, können wir die Sitzung auffordern, Operationen auf unserem Berechnungsgraphen auszuführen, indem wir die Sitzung aufrufen. Um die Berechnung auszuführen, müssen wir „run“ verwenden.
Wenn die Additionsoperation ausgeführt wird, wird sie erkennen, dass sie die Werte der Knoten X_1 und X_2 erfassen muss. Daher müssen wir auch Werte für X_1 und X_2 eingeben. Dies können wir 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.
Die Ergebnisse drucken wir mit print(result) aus. Wir sollten 4, 10 und 18 für 1×4, 2×5 und 3×6 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 a maschineller Lernalgorithmus ist das Laden der Daten. Es gibt zwei gängige Methoden zum Laden von Daten:
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 ein Python Code. Diese Codezeilen haben nichts mit Tensorflow zu tun.
2. Tensorflow-Datenpipeline: Tensorflow verfügt über eine integrierte API, mit der Sie die Daten problemlos laden, den Vorgang ausführen und den Algorithmus für maschinelles Lernen füttern können. Diese Methode funktioniert besonders gut, wenn Sie über einen großen Datensatz verfügen. Beispielsweise sind Bilddatensätze bekanntermaßen riesig und passen nicht in den Speicher. Die Datenpipeline verwaltet den Speicher selbst
Welche Lösung soll verwendet werden?
Daten in den Speicher laden
Wenn Ihr Datensatz nicht zu groß ist, also 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. Im nächsten Tutorial erfahren Sie mehr über Pandas.
Laden Sie Daten mit der Tensorflow-Pipeline
Die zweite Methode funktioniert am besten, wenn Sie über einen großen Datensatz verfügen. Wenn Sie beispielsweise über einen Datensatz von 50 Gigabyte verfügen und Ihr Computer nur über 16 Gigabyte Arbeitsspeicher verfügt, stürzt der Computer ab.
In dieser Situation müssen Sie eine Tensorflow-Pipeline erstellen. Die Pipeline lädt die Daten stapelweise oder in kleinen Blöcken. Jede Charge wird in die Pipeline übertragen und ist für das Training bereit. Der Aufbau einer Pipeline ist eine hervorragende Lösung, da Sie damit paralleles Rechnen nutzen können. Dies bedeutet, dass Tensorflow das Modell auf mehreren CPUs trainiert. Es fördert die Berechnung und ermöglicht das Training leistungsstarker neuronaler Netzwerke.
In den nächsten Tutorials erfahren Sie, wie Sie eine wichtige Pipeline zur Versorgung Ihres neuronalen Netzwerks aufbauen.
Kurz gesagt: Wenn Sie über einen kleinen Datensatz verfügen, 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 nutzen möchten, ist die Arbeit mit der Tensorflow-Pipeline komfortabler.
So erstellen Sie eine TensorFlow-Pipeline
Hier sind die Schritte zum Erstellen einer TensorFlow-Pipeline:
Im vorherigen Beispiel haben wir manuell drei Werte für X_1 und X_2 hinzugefügt. Jetzt werden wir sehen, wie man Daten in Tensorflow lädt:
Schritt 1) Erstellen Sie die Daten
Lassen Sie uns zunächst die Numpy-Bibliothek verwenden, um zwei Zufallswerte zu generieren.
import numpy as np x_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 shape=[1,2] schreiben.
# using a placeholder x = 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, über die 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 einzuspeisen. 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 ist ähnlich wie im vorherigen Beispiel. Wir initiieren eine Sitzung und führen den Operationsiterator aus. Wir füttern das feed_dict mit dem Wert, der generiert wird von numpig. Diese beiden Werte füllen den Platzhalter x. Dann führen wir get_next aus, um das Ergebnis auszudrucken.
with tf.Session() as sess: # feed the placeholder with data sess.run(iterator.initializer, feed_dict={ x: x_input }) print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]
Zusammenfassung
- TensorFlow-Bedeutung: TensorFlow ist die bekannteste Deep-Learning-Bibliothek der letzten Jahre. Ein Praktiker, der TensorFlow verwendet, kann jede Deep-Learning-Struktur aufbauen, wie CNN, RNN oder ein einfaches künstliches neuronales Netzwerk.
- TensorFlow wird hauptsächlich von Akademikern, Startups und großen Unternehmen verwendet. Google verwendet TensorFlow in fast allen alltäglichen Google-Produkten, darunter Gmail, Photo und die Google-Suchmaschine.
- Das Google Brain-Team hat TensorFlow entwickelt, um die Lücke zwischen Forschern und Produktentwicklern zu schließen. 2015 haben sie TensorFlow öffentlich gemacht; seine Popularität nimmt rapide zu. Heute ist TensorFlow die Deep-Learning-Bibliothek mit den meisten Repositories auf GitHub.
- Praktiker verwenden Tensorflow, weil es einfach in großem Maßstab bereitgestellt werden kann. Es ist so konzipiert, dass es in der Cloud oder auf mobilen Geräten wie iOS und iOS funktioniert Android.
Tensorflow funktioniert in einer Sitzung. Jede Sitzung wird durch ein Diagramm mit unterschiedlichen Berechnungen definiert. Ein einfaches Beispiel kann die Multiplikation mit einer Zahl sein. In Tensorflow sind drei Schritte erforderlich:
- Definiere 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")
- Ausführen des Vorgangs
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 befolgen, können Sie Daten in TensorFLow laden:
- Erstellen Sie die Daten
import numpy as np x_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 Datensatzmethode
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))