Was ist TensorFlow? Die Bibliothek für maschinelles Lernen erklärt

Maschinelles Lernen ist eine komplexe Disziplin. Die Implementierung von Modellen für maschinelles Lernen ist jedoch weitaus weniger entmutigend und schwierig als früher, dank Frameworks für maschinelles Lernen wie TensorFlow von Google, die das Erfassen von Daten, das Trainieren von Modellen, das Bereitstellen von Vorhersagen und das Verfeinern zukünftiger Ergebnisse vereinfachen.

TensorFlow wurde vom Google Brain-Team erstellt und ist eine Open-Source-Bibliothek für numerische Berechnungen und umfangreiches maschinelles Lernen. TensorFlow bündelt eine Reihe von Modellen und Algorithmen für maschinelles Lernen und Deep Learning (auch bekannt als neuronale Vernetzung) und macht sie mithilfe einer gemeinsamen Metapher nützlich. Es verwendet Python, um eine praktische Front-End-API zum Erstellen von Anwendungen mit dem Framework bereitzustellen und diese Anwendungen in Hochleistungs-C ++ auszuführen.

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-basierte Simulationen (Partial Differential Equation) trainieren und ausführen. Das Beste ist, dass TensorFlow die Produktionsvorhersage im Maßstab unterstützt, wobei dieselben Modelle für das Training verwendet werden.

Wie TensorFlow funktioniert

Mit TensorFlow können Entwickler Datenflussdiagramme erstellen - Strukturen, die beschreiben, wie sich Daten durch ein Diagramm oder eine Reihe von Verarbeitungsknoten bewegen. Jeder Knoten im Diagramm stellt eine mathematische Operation dar, und jede Verbindung oder Kante zwischen Knoten ist ein mehrdimensionales Datenarray oder ein Tensor .

TensorFlow bietet all dies für den Programmierer über die Python-Sprache. Python ist einfach zu erlernen und zu bearbeiten und bietet bequeme Möglichkeiten, um auszudrücken, wie Abstraktionen auf hoher Ebene miteinander gekoppelt werden können. Knoten und Tensoren in TensorFlow sind Python-Objekte, und TensorFlow-Anwendungen sind selbst Python-Anwendungen.

Die eigentlichen mathematischen Operationen werden jedoch nicht in Python ausgeführt. Die über TensorFlow verfügbaren Transformationsbibliotheken werden als leistungsstarke C ++ - Binärdateien geschrieben. Python leitet nur den Datenverkehr zwischen den Teilen und bietet Programmierabstraktionen auf hoher Ebene, um sie miteinander zu verbinden.

TensorFlow-Anwendungen können auf fast jedem geeigneten Ziel ausgeführt werden: 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 zur weiteren Beschleunigung auf Googles benutzerdefiniertem TPU-Silizium (TensorFlow Processing Unit) ausführen. Die resultierenden Modelle, die von TensorFlow erstellt wurden, können jedoch auf fast jedem Gerät bereitgestellt werden, auf dem sie zur Bereitstellung von Vorhersagen verwendet werden.

TensorFlow 2.0, das im Oktober 2019 veröffentlicht wurde, hat das Framework auf der Grundlage von Benutzerfeedback in vielerlei Hinsicht überarbeitet, um die Arbeit (z. B. durch Verwendung der relativ einfachen Keras-API für das Modelltraining) und die Leistung zu vereinfachen. Verteilte Schulungen sind dank einer neuen API einfacher durchzuführen, und die Unterstützung von TensorFlow Lite ermöglicht die Bereitstellung von Modellen auf einer größeren Vielfalt von Plattformen. Für frühere Versionen von TensorFlow geschriebener Code muss jedoch neu geschrieben werden - manchmal nur geringfügig, manchmal erheblich -, um die neuen TensorFlow 2.0-Funktionen optimal nutzen zu können.

TensorFlow Vorteile

Der größte Vorteil von TensorFlow für die Entwicklung des maschinellen Lernens ist die Abstraktion. Anstatt sich mit den Details der Implementierung von Algorithmen zu befassen oder herauszufinden, wie die Ausgabe einer Funktion mit der Eingabe einer anderen verknüpft werden kann, kann sich der Entwickler auf die Gesamtlogik der Anwendung konzentrieren. TensorFlow kümmert sich um die Details hinter den Kulissen.

TensorFlow bietet zusätzliche Annehmlichkeiten für Entwickler, die Debugging und Introspektion in TensorFlow-Apps benötigen. Im eifrigen Ausführungsmodus können Sie jede Diagrammoperation separat und transparent auswerten und ändern, anstatt das gesamte Diagramm als einzelnes undurchsichtiges Objekt zu erstellen und alles gleichzeitig auszuwerten. Mit der TensorBoard-Visualisierungssuite können Sie die Ausführung von Diagrammen mithilfe eines interaktiven, webbasierten Dashboards überprüfen und profilieren.

TensorFlow profitiert auch von der Unterstützung eines kommerziellen Outfits auf der A-Liste in Google. Google hat nicht nur die rasante Entwicklung des Projekts vorangetrieben, sondern auch zahlreiche wichtige Angebote rund um TensorFlow geschaffen, die die Bereitstellung und Verwendung vereinfachen: das oben erwähnte TPU-Silizium für eine beschleunigte Leistung in der Google-Cloud; ein Online-Hub für den Austausch von Modellen, die mit dem Framework erstellt wurden; In-Browser- und Mobile-freundliche Inkarnationen des Frameworks; und vieles mehr.

Eine Einschränkung: Einige Details der Implementierung von TensorFlow machen es schwierig, für einige Schulungsjobs vollständig deterministische Modelltrainingsergebnisse zu erhalten. Manchmal unterscheidet sich ein auf einem System trainiertes Modell geringfügig von einem auf einem anderen System trainierten Modell, selbst wenn genau dieselben Daten eingegeben werden. Die Gründe dafür sind rutschig - z. B. wie Zufallszahlen gesetzt werden und wo oder bestimmte nicht deterministische Verhaltensweisen bei der Verwendung von GPUs). Es ist jedoch möglich, diese Probleme zu umgehen, und das Team von TensorFlow erwägt mehr Kontrollen, um den Determinismus in einem Workflow zu beeinflussen.

Zugehöriges Video: Maschinelles Lernen und KI entschlüsselt

Unser Panel durchbricht den Hype um maschinelles Lernen und künstliche Intelligenz und spricht über die Definitionen und Implikationen der Technologie.

TensorFlow gegen die Konkurrenz

TensorFlow konkurriert mit einer Reihe anderer Frameworks für maschinelles Lernen. PyTorch, CNTK und MXNet sind drei wichtige Frameworks, die viele der gleichen Anforderungen erfüllen. Unten habe ich notiert, wo sie auffallen und gegen TensorFlow knapp werden.

  • PyTorch wurde nicht nur mit Python erstellt, sondern weist auch viele andere Ähnlichkeiten mit TensorFlow auf: hardwarebeschleunigte Komponenten unter der Haube, ein hoch interaktives Entwicklungsmodell, das Design-as-you-go-Arbeiten ermöglicht, und viele nützliche Komponenten, die bereits enthalten sind. PyTorch ist im Allgemeinen die bessere Wahl für die schnelle Entwicklung von Projekten, die in kurzer Zeit betriebsbereit sein müssen. TensorFlow überzeugt jedoch durch größere Projekte und komplexere Workflows.

  • CNTK , das Microsoft Cognitive Toolkit, verwendet wie TensorFlow eine Diagrammstruktur zur Beschreibung des Datenflusses, konzentriert sich jedoch am meisten auf die Erstellung von Deep-Learning-Neuronalen Netzen. CNTK verarbeitet viele neuronale Netzwerkjobs schneller und verfügt über einen breiteren Satz von APIs (Python, C ++, C #, Java). CNTK ist derzeit jedoch nicht so einfach zu erlernen oder bereitzustellen wie TensorFlow.

  • Apache MXNet , das von Amazon als führendes Deep-Learning-Framework für AWS eingeführt wurde, kann nahezu linear über mehrere GPUs und mehrere Computer skaliert werden. Es unterstützt auch eine breite Palette von Sprach-APIs - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go - obwohl die nativen APIs nicht so angenehm zu bedienen sind wie die von TensorFlow.