Googles Machine-Learning-Library TensorFlow ist eine Python-freundliche Open-Source-Bibliothek für numerische Berechnungen, die maschinelles Lernen schneller und einfacher macht. [...]
Machine Learning bzw. Maschinelles Lernen ist eine komplexe Disziplin. Die Implementierung von maschinellen Lernmodellen ist jedoch dank der Machine-Learning-Frameworks – wie z.B. TensorFlow von Google – weit weniger schwierig als bisher. Sie erleichtern das Erfassen von Daten, das Trainieren von Modellen, das Bereitstellen von Vorhersagen und das Verfeinern zukünftiger Ergebnisse.
TensorFlow wurde vom Google Brain-Team entwickelt und ist eine Open-Source-Bibliothek für numerische Berechnungen und maschinelles Lernen für große Projekte. TensorFlow bündelt eine Menge Machine-Learning- und Deep-Learning-Modelle bzw. –Algorithmen (auch als neuronale Netze bezeichnet) und macht sie durch eine gemeinsame Metapher nutzbar. Es verwendet Python, um eine praktische Front-End-API zum Erstellen von Anwendungen mit dem Framework bereitzustellen, während diese Anwendungen in der leistungsfähigen Programmiersprache C ++ ausgeführt werden.
TensorFlow kann tiefe neuronale Netze für handschriftliche Ziffernklassifizierung, Bilderkennung, Worteinbettungen, wiederkehrende neuronale Netze, Sequenz-zu-Sequenz-Modelle für maschinelle Übersetzung, Verarbeitung natürlicher Sprache und PDE (partielle Differentialgleichung) basierte Simulationen trainieren und betreiben. Das Beste ist, dass TensorFlow die Produktionsvorhersage jeglicher Größe unterstützt, wobei die gleichen Modelle für das Training verwendet werden.
Wie TensorFlow funktioniert
Mit TensorFlow können Entwickler Datenflussdiagramme erstellen, die beschreiben, wie sich Daten durch ein Diagramm oder eine Reihe von Verarbeitungsknoten bewegen. Jeder Knoten in dem Graphen stellt eine mathematische Operation dar, und jede Verbindung oder Kante zwischen Knoten ist ein mehrdimensionales Datenfeld oder Tensor.
Das alles steht dem Programmierer bei TensorFlow in der Programmiersprache Python zur Verfügung. Python ist leicht zu erlernen und zu verwenden und erlaubt auf bequeme Weise hochgradige Abstraktionen miteinander zu koppeln. Knoten und Tensoren in TensorFlow sind Python-Objekte und TensorFlow-Anwendungen sind wiederum Python-Anwendungen.
Die eigentlichen mathematischen Operationen werden jedoch in Python nicht ausgeführt. Die Bibliotheken von Transformationen, die über TensorFlow verfügbar sind, werden als leistungsstarke C ++ – Binärdateien geschrieben. Python lenkt nur den Datenverkehr zwischen den Teilen und bietet hochentwickelte Programmier-Abstraktionen, um sie miteinander zu verbinden.
TensorFlow-Anwendungen können auf den meisten Zielgeräten ausgeführt werden: auf einem lokalen Computer, einem Cluster in der Cloud, iOS- und Android-Geräten, CPUs oder GPUs. Wenn Sie die Google-eigene Cloud verwenden, können Sie TensorFlow auf Googles speziellem TensorFlow Processing Unit (TPU) -Prozessor noch schneller ausführen. Die von TensorFlow erstellten resultierenden Modelle können jedoch auf fast allen Geräten bereitgestellt werden, wo sie wiederum die Vorhersagen zur Verfügung stellen.
Vorteile von TensorFlow
Der größte Vorteil, den TensorFlow für die Entwicklung von maschinellem Lernen bietet, ist Abstraktion. Anstatt sich mit den grundlegenden Details der Implementierung von Algorithmen zu befassen oder geeignete Wege zu finden, um die Ausgabe einer Funktion an die Eingabe einer anderen zu hängen, kann sich der Entwickler auf die Gesamtlogik der Anwendung konzentrieren. TensorFlow kümmert sich um die Details hinter den Kulissen.
TensorFlow bietet zusätzlichen Komfort für Entwickler, die Debug und Introspektion in TensorFlow-Apps benötigen. Mit dem Eager-Execution-Modus können Sie jede Diagrammoperation getrennt und transparent bewerten und ändern, anstatt den gesamten Graphen als einzelnes undurchsichtiges Objekt zu konstruieren und darüberhinaus gleichzeitig zu bewerten. Mit der TensorBoard-Visualisierungssuite können Sie die Funktionsweise von Diagrammen über ein interaktives, webbasiertes Dashboard prüfen und grafisch darstellen.
Und natürlich erhält TensorFlow viele Vorteile durch die Unterstützung von Google. Google hat nicht nur das schnelle Entwicklungstempo des Projekts gefördert, sondern auch viele wichtige Angebote rund um TensorFlow geschaffen, die die Bereitstellung erleichtern und einfacher zu nutzen sind: der oben erwähnte TPU-Prozessor für eine beschleunigte Leistung in der Cloud von Google; ein Online-Hub für den Austausch von Modellen, die mit dem Framework erstellt wurden; In-Browser- und Mobile-freundliche Anwendungen des Frameworks und vieles mehr.
Achtung: Einige Details der Implementierung von TensorFlow machen es schwierig, für einige Trainingsaufgaben völlig deterministische Modelltrainingsergebnisse zu erhalten. Manchmal unterscheidet sich ein Modell, das auf einem System trainiert wird, leicht von einem Modell, das auf einem anderen trainiert wurde, selbst wenn es genau die gleichen Daten erhält. Die Gründe dafür sind rutschig – z. B. wie und wo Zufallszahlen gesetzt werden oder bestimmte nicht-deterministische Verhaltensweisen bei der Verwendung von GPUs. Es ist jedoch möglich, diese Probleme zu umgehen, und das TensorFlow-Team überlegt die Einführung von mehr Kontrollen, um den Determinismus in einem Workflow zu beeinflussen.
TensorFlow und die Konkurrenz
TensorFlow konkurriert mit einer Vielzahl anderer Machine-Learning-Frameworks. PyTorch, CNTK und MXNet sind drei wichtige Frameworks, die viele der gleichen Bedürfnisse adressieren. Im Folgenden ist angeführt, wo sie sich gegen TensorFlow abheben.
- PyTorchist nicht nur mit Python gebaut, sondern hat viele weitere Ähnlichkeiten mit TensorFlow: hardwarebeschleunigte Komponenten unter der Haube, ein hochgradig interaktives Entwicklungsmodell, das Aerbeiten im Design-as-you-go-Verfahren ermöglicht und viele nützliche Komponenten enthält. PyTorch ist im Allgemeinen eine bessere Wahl für die schnelle Entwicklung von Projekten, die in kurzer Zeit ausgeführt werden müssen, aber TensorFlow ist besser für größere Projekte und komplexere Arbeitsabläufe geeignet.
- CNTK, das Microsoft Cognitive Toolkit, verwendet wie TensorFlow eine Diagrammstruktur zur Beschreibung des Datenflusses, konzentriert sich jedoch am meisten auf die Erstellung von neuronalen Deep-Learning-Netzwerken. CNTK verarbeitet viele neuronale Netzwerkjobs schneller und verfügt über eine breitere Palette von APIs (Python, C ++, C #, Java). Aber CNTK ist gegenwärtig noch nicht so einfach zu erlernen oder zu implementieren wie TensorFlow.
- Apache MXNet, das von Amazon als Deep-Learning-Framework für AWS eingeführt wurde, kann nahezu linear auf mehrere GPUs und mehrere Maschinen skaliert werden. Es unterstützt auch eine breite Palette von Sprach-APIs – Python, C ++, Scala, R, JavaScript, Julia, Perl, Go – obwohl das Arbeiten mit den nativen APIs nicht so angenehm ist wie mit jenen von TensorFlow.
Be the first to comment