Einführung in TensorFlow: Deep-Learning-Systeme programmieren, trainieren, skalieren und deployen
Von Tom Hope, Yehezkel S. Resheff und Itay Lieder
()
Über dieses E-Book
Sie erarbeiten zunächst einige einfache Beispielaufgaben mit TensorFlow und tauchen anschließend tiefer in Themen ein wie die Architektur neuronaler Netze, die Visualisierung mit TensorBoard, Abstraktionsbibliotheken für TensorFlow oder Multithread-Pipelines zur Dateneingabe. Wenn Sie dieses Buch durchgearbeitet haben, sind Sie in der Lage, Deep-Learning-Systeme mit TensorFlow zu erstellen und im Produktivbetrieb einzusetzen.
Ähnlich wie Einführung in TensorFlow
Ähnliche E-Books
Natural Language Processing mit PyTorch: Intelligente Sprachanwendungen mit Deep Learning erstellen Bewertung: 0 von 5 Sternen0 BewertungenMachine Learning – Die Referenz: Mit strukturierten Daten in Python arbeiten Bewertung: 0 von 5 Sternen0 BewertungenPyTorch kompakt: Syntax, Design Patterns und Codebeispiele für Deep-Learning-Modelle Bewertung: 0 von 5 Sternen0 BewertungenPython One-Liners: Profi-Programmierung durch kurz gefasstes Python Bewertung: 0 von 5 Sternen0 BewertungenPython für Excel: Eine moderne Umgebung für Automatisierung und Datenanalyse Bewertung: 0 von 5 Sternen0 BewertungenDeep Learning – Grundlagen und Implementierung: Neuronale Netze mit Python und PyTorch programmieren Bewertung: 0 von 5 Sternen0 BewertungenNatural Language Processing mit Transformern: Sprachanwendungen mit Hugging Face erstellen Bewertung: 0 von 5 Sternen0 BewertungenHitchhiker's Guide für Python: Best Practices für Programmierer Bewertung: 0 von 5 Sternen0 BewertungenDeep Learning für die Biowissenschaften: Einsatz von Deep Learning in Genomik, Biophysik, Mikroskopie und medizinischer Analyse Bewertung: 0 von 5 Sternen0 BewertungenEinführung in Machine Learning mit Python: Praxiswissen Data Science Bewertung: 0 von 5 Sternen0 BewertungenData-Science-Crashkurs: Eine interaktive und praktische Einführung Bewertung: 0 von 5 Sternen0 BewertungenDatenintensive Anwendungen designen: Konzepte für zuverlässige, skalierbare und wartbare Systeme Bewertung: 0 von 5 Sternen0 BewertungenIaaS mit OpenStack: Cloud Computing in der Praxis Bewertung: 3 von 5 Sternen3/5Speichernetze: Grundlagen, Architekturen, Datenmanagement Bewertung: 0 von 5 Sternen0 BewertungenPraxiseinstieg Deep Learning: Mit Python, Caffe, TensorFlow und Spark eigene Deep-Learning-Anwendungen erstellen Bewertung: 0 von 5 Sternen0 BewertungenKompaktkurs C# 7 Bewertung: 0 von 5 Sternen0 BewertungenProgrammieren in TypeScript: Skalierbare JavaScript-Applikationen entwickeln Bewertung: 0 von 5 Sternen0 BewertungenFehlerbaumanalyse in Theorie und Praxis: Grundlagen und Anwendung der Methode Bewertung: 0 von 5 Sternen0 BewertungenPyTorch für Deep Learning: Anwendungen für Bild-, Ton- und Textdaten entwickeln und deployen Bewertung: 0 von 5 Sternen0 BewertungenREST und HTTP: Entwicklung und Integration nach dem Architekturstil des Web Bewertung: 5 von 5 Sternen5/5Verteilte Systeme mit Kubernetes entwerfen: Patterns und Prinzipien für skalierbare und zuverlässige Services Bewertung: 0 von 5 Sternen0 BewertungenLinux – kurz & gut: Die wichtigen Befehle Bewertung: 4 von 5 Sternen4/5Elasticsearch: Ein praktischer Einstieg Bewertung: 0 von 5 Sternen0 BewertungenRoutineaufgaben mit Python automatisieren: Praktische Programmierlösungen für Einsteiger Bewertung: 0 von 5 Sternen0 BewertungenSprechen Sie Java?: Eine Einführung in das systematische Programmieren Bewertung: 4 von 5 Sternen4/5Merkmalskonstruktion für Machine Learning: Prinzipien und Techniken der Datenaufbereitung Bewertung: 0 von 5 Sternen0 BewertungenIstio: Service Mesh für Microservices Bewertung: 0 von 5 Sternen0 BewertungenNebenläufige Programmierung mit Java: Konzepte und Programmiermodelle für Multicore-Systeme Bewertung: 0 von 5 Sternen0 BewertungenCouchDB mit PHP Bewertung: 0 von 5 Sternen0 BewertungenPrinzipien des Softwaredesigns: Entwurfsstrategien für komplexe Systeme Bewertung: 0 von 5 Sternen0 Bewertungen
Computer für Sie
Raspberry Pi Kinderleicht: Pi 4 mit 8 GB Bewertung: 0 von 5 Sternen0 BewertungenLexikon der Symbole und Archetypen für die Traumdeutung Bewertung: 5 von 5 Sternen5/5Die KI Bibel, mit künstlicher Intelligenz Geld verdienen: Echte Fallbeispiele und Anleitungen zum Umsetzen Bewertung: 1 von 5 Sternen1/5Anglizismen und andere "Fremdwords" deutsch erklärt: Über 1000 aktuelle Begriffe Bewertung: 0 von 5 Sternen0 Bewertungen60+ Webtools - Für den Unterricht und mehr: Unterricht Digital gestalten und spielerisch Online Unterrichten Bewertung: 0 von 5 Sternen0 BewertungenEinstieg in ChatGPT: Künstliche Intelligenz verstehen und nutzen: Ein praktischer Ratgeber für Einsteiger Bewertung: 0 von 5 Sternen0 BewertungenData Warehouse im Rahmen der Business Intelligence: Konzeption eines Vorgehensmodells Bewertung: 0 von 5 Sternen0 BewertungenScribus Desktop Publishing: Das Einsteigerseminar Bewertung: 0 von 5 Sternen0 Bewertungen...Als die Noten laufen lernten...Band 2: Kabarett-Operette-Revue-Film-Exil. Unterhaltungsmusik bis 1945 Bewertung: 0 von 5 Sternen0 BewertungenKybernetik, Kommunikation und Konflikt: Gregory Bateson und (s)eine kybernetische Konflikttheorie Bewertung: 0 von 5 Sternen0 BewertungenShopware 6 Handbuch Bewertung: 0 von 5 Sternen0 BewertungenDas Excel SOS-Handbuch: Wie sie Excel (2010-2019 & 365) schnell & einfach meistern. Die All-in-One Anleitung für ihren privaten & beruflichen Excel-Erfolg! Bewertung: 0 von 5 Sternen0 BewertungenWordPress - Elementor Bewertung: 0 von 5 Sternen0 BewertungenMachine Learning – kurz & gut: Eine Einführung mit Python, Pandas und Scikit-Learn Bewertung: 5 von 5 Sternen5/5Datenbanken: Grundlagen und Entwurf Bewertung: 0 von 5 Sternen0 BewertungenTastenkombinationen für den Mac: Alle wichtigen Funktionen Bewertung: 0 von 5 Sternen0 BewertungenNeuronale Netze selbst programmieren: Ein verständlicher Einstieg mit Python Bewertung: 0 von 5 Sternen0 BewertungenEinstieg in den Online-Unterricht: Videokonferenzen in der Erwachsenenbildung Bewertung: 0 von 5 Sternen0 BewertungenNimm den Chor doch selber auf: Crashkurs für das Aufnehmen und Mischen von Chören Bewertung: 0 von 5 Sternen0 BewertungenEinführung ins Darknet: Darknet ABC Bewertung: 0 von 5 Sternen0 BewertungenCommand Line Kung Fu: Bash-Scripting-Tricks, Linux Tipps und praktische Einzeiler für die Shell Bewertung: 0 von 5 Sternen0 BewertungenDie Geschichte des Computers: Wie es bis zur Form des heutigen 'PC' kam. Bewertung: 0 von 5 Sternen0 BewertungenDocker und die Containerwelt: Einstieg und Expertentipps rund um Docker-Container Bewertung: 1 von 5 Sternen1/5Erste Schritte mit dem Raspberry Pi: Installation, Konfiguration, Tuning und Praxis für alle aktuellen Raspberry-Pi-Modelle Bewertung: 0 von 5 Sternen0 BewertungenAufstieg der Roboter: Wie unsere Arbeitswelt gerade auf den Kopf gestellt wird - und wie wir darauf reagieren müssen Bewertung: 0 von 5 Sternen0 BewertungenRunning Lean: Das How-to für erfolgreiche Innovationen Bewertung: 4 von 5 Sternen4/5ISO27001/ISO27002: Ein Taschenführer Bewertung: 0 von 5 Sternen0 BewertungenGames | Game Design | Game Studies: Eine Einführung (Deutschsprachige Ausgabe) Bewertung: 0 von 5 Sternen0 BewertungenLaws of UX: 10 praktische Grundprinzipien für intuitives, menschenzentriertes UX-Design Bewertung: 0 von 5 Sternen0 Bewertungen
Rezensionen für Einführung in TensorFlow
0 Bewertungen0 Rezensionen
Buchvorschau
Einführung in TensorFlow - Tom Hope
KAPITEL 1
Einleitung
Dieses Kapitel gibt Ihnen einen Überblick über TensorFlow und sein Haupteinsatzgebiet: die Implementierung und den Betrieb von Deep-Learning-Systemen. Wir beginnen mit einer sehr kurzen Einführung in Deep Learning. Anschließend präsentieren wir Ihnen TensorFlow und einige seiner eindrucksvollen Anwendungsbeispiele für maschinelle Intelligenz und sehen uns die wichtigsten Merkmale und Eigenschaften an.
Einstieg in Deep Learning
Von Großkonzernen bis zu Start-ups in Gründung sammeln Softwareingenieure und Datenanalytiker riesige Datenmengen und verwenden maschinelle Lernalgorithmen, um komplexe Fragestellungen zu beantworten und intelligente Systeme zu bauen. Wo auch immer man sich umschaut, konnten auf Deep Learning beruhende Algorithmen in letzter Zeit großartige Erfolge verzeichnen und haben traditionelle Methoden oft weit hinter sich gelassen. Deep Learning wird heute verwendet, um den Inhalt von Bildern, Text und Sprache zu verstehen. Die Systeme dazu erstrecken sich von Apps für mobile Geräte bis zu autonomen Fahrzeugen. Die Entwicklung schreitet in diesem Gebiet in atemberaubendem Tempo voran, und Deep Learning breitet sich auf weitere Gebiete und Arten von Daten aus, wie etwa komplexe chemische und genetische Strukturen bei der Suche nach Medikamenten und hochdimensionale medizinische Aufzeichnungen im Gesundheitswesen.
Deep-Learning-Methoden – die auch als Deep-Learning-Netze bezeichnet werden – waren ursprünglich an das riesige Netz der im menschlichen Gehirn miteinander verbundenen Neuronen angelehnt. Beim Deep Learning speisen wir Millionen Datenpunkte in ein neuronales Netz ein und bringen ihnen bei, Muster in den Rohdaten zu erkennen. Deep-Learning-Netze verarbeiten diese Rohdaten (etwa die Pixelwerte eines Bilds) und stellen sie in besser nutzbarer Form dar, wobei sie in ihnen Merkmale höherer Ordnung erkennen (beispielsweise Formen und Kanten in Bildern). Dabei werden komplexe Eigenschaften erfasst, indem immer kleinere Informationsbausteine miteinander kombiniert werden, um schwierige Aufgaben wie die Klassifikation von Bildern zu lösen (Abbildung 1-1). Diese Netze lernen automatisch, abstrakte Darstellungen zu erzeugen, indem sie sich selbst an die in den Daten beobachteten Muster anpassen und die eigenen Fehler korrigieren. Die Fähigkeit, Darstellungen von Daten automatisch zu konstruieren, ist der Hauptvorteil von Deep-Learning-Netzen gegenüber konventionellen maschinellen Lernmethoden, die üblicherweise Sachkenntnis und manuelles Erarbeiten von Merkmalen erfordern, bevor das »Lernen« erfolgen kann.
Abbildung 1-1: Illustration einer Bildklassifikation mit einem Deep-Learning-Netz. Das Netz verarbeitet Rohdaten (die Pixelwerte eines Bilds) und lernt, sie in eine zur genauen Bildklassifikation nützliche Darstellung zu überführen.
Dieses Buch beschäftigt sich mit TensorFlow, dem Deep-Learning-Framework von Google. Deep-Learning-Algorithmen werden seit mehreren Jahren in vielerlei Produkten und Arbeitsbereichen bei Google eingesetzt, beispielsweise Suche, Übersetzung, Werbung, Computersehen und Spracherkennung. TensorFlow ist Googles System zweiter Generation zum Implementieren und Betreiben von Deep-Learning-Netzen und löst das 2011 gestartete Projekt DistBelief ab.
TensorFlow wurde der Öffentlichkeit im November 2015 als Open-Source-Framework unter der Apache-Lizenz 2.0 zur Verfügung gestellt und hat die gesamte Branche im Sturm erobert. Die Anwendungen gehen weit über interne Google-Projekte hinaus. Seine Skalierbarkeit und Flexibilität sowie die beeindruckende Leistung der Programmierer bei Google, die TensorFlow ständig warten und weiterentwickeln, haben es zum führenden System für Deep Learning gemacht.
TensorFlow für KI-Systeme verwenden
Bevor wir uns genauer damit beschäftigen, was TensorFlow ist und welches seine wichtigsten Merkmale sind, möchten wir Ihnen einige aufregende Beispiele für aktuelle Anwendungen von TensorFlow aufzeigen, die bei Google und anderswo in der Praxis eingesetzt werden.
Angelernte Modelle: Herausragendes Computersehen für alle
Ein Gebiet, auf dem Deep Learning wirklich brilliert, ist das Computersehen. Eine grundlegende Aufgabe beim Computersehen ist die Klassifikation von Bildern – die Erstellung von Algorithmen und Systemen, die Bilder als Eingabe erhalten und eine oder mehrere Kategorien ausgeben, die diese am besten beschreiben. Forscher, Datenanalytiker und Softwareingenieure haben fortgeschrittene Deep-Learning-Netze entwickelt, die beim Verstehen visueller Inhalte hochgenaue Ergebnisse erzielen. Diese Deep-Learning-Netze werden üblicherweise mit großen Mengen an Bilddaten angelernt, was viel Zeit, Ressourcen und Mühe in Anspruch nimmt. Allerdings veröffentlichen Forscher immer häufiger angelernte Modelle – Deep-Learning-Netze, die Nutzer herunterladen und sofort auf ihre eigenen Daten anwenden können (Abbildung 1-2).
Abbildung 1-2: Fortgeschrittenes Computersehen mit angelernten TensorFlow-Modellen
TensorFlow enthält nützliche Hilfsmittel, mit denen Nutzer aktuelle angelernte Modelle beschaffen und verwenden können. Wir werden im Verlauf dieses Buchs mehrere praktische Beispiele hierfür sehen und uns mit den Details beschäftigen.
Ausführliche Beschreibungstexte zu Bildern erzeugen
Ein aufregendes Gebiet der Deep-Learning-Forschung zum Erstellen maschineller Lernsysteme konzentriert sich auf die Erzeugung von Beschreibungstexten zu visuellen Inhalten (Abbildung 1-3). Eine wichtige Aufgabe dabei ist die Bildbeschriftung – dem Modell beizubringen, kurze und präzise Bildunterschriften zu erzeugen. Auch hier sind fortgeschrittene angelernte TensorFlow-Modelle verfügbar, die das Verständnis von Text mit Computersehen kombinieren.
Abbildung 1-3: Vom Bild zur Bildunterschrift (Anwendungsbeispiel)
Text zusammenfassen
Das Verstehen natürlicher Sprache (Natural Language Understanding, NLU) ist eine wichtige Fertigkeit für KI-Systeme. Jeden Tag werden gewaltige Mengen von Text erstellt: Webinhalte, soziale Medien, Nachrichten, E-Mails, interne Firmenkorrespondenz und vieles mehr.
Abbildung 1-4: Ein Beispiel für automatische Zusammenfassung von Text
Eine der begehrtesten Fähigkeiten ist das Zusammenfassen von Text, aus langen Dokumenten kurze und zusammenhängende Sätze zu erzeugen, die die wichtigsten Informationen aus den ursprünglichen Texten wiedergeben (Abbildung 1-4). Wie wir später in diesem Buch sehen werden, enthält TensorFlow mächtige Werkzeuge zum Anlernen von Deep-Learning-Netzen für NLU-Aufgaben, die sich zur automatischen Zusammenfassung von Texten einsetzen lassen.
TensorFlow: Was verbirgt sich hinter dem Namen?
Bei Deep-Learning-Netzen geht es, wie der Name und die Anwendungsbeispiele vermuten lassen, um Netze aus Neuronen. Dabei lernt jedes Neuron, mit seiner Funktion zu einem großen Ganzen beizutragen. Daten wie Bilder werden in ein solches Netz eingegeben und fließen durch das Netz, während dieses sich im Anlernprozess anpasst oder im laufenden Betrieb Vorhersagen trifft.
Tensoren sind die im Deep Learning übliche Erscheinungsform von Daten. Einfach ausgedrückt sind Tensoren nichts weiter als mehrdimensionale Felder, eine Erweiterung zweidimensionaler Tabellen (Matrizen) auf Daten mit mehr Dimensionen. Wie Schwarz-Weiß-Bilder (oder Graustufen) sich als »Tabellen« der Pixelwerte abbilden lassen, so lassen sich Farbbilder im RGB-Format als Tensoren (dreidimensionale Felder) abbilden, wobei jedes Pixel drei Werte für die Farbkomponenten Rot, Grün und Blau besitzt.
In TensorFlow wird die Berechnung als Datenflussgraph abgebildet (Abbildung 1-5). Allgemein ausgedrückt, stehen die Knoten dieses Graphen für Operationen (wie Addition oder Multiplikation), und die Kanten stehen für Daten (Tensoren), die durch das System fließen. In den folgenden Kapiteln werden wir diese Begriffe genauer ausführen und anhand zahlreicher Beispiele ein Verständnis für sie entwickeln.
Abbildung 1-5: Ein Datenfluss-Berechnungsgraph. Die Daten fließen als Tensoren durch einen Graphen von Rechenoperationen, aus denen unser Deep-Learning-Netz besteht.
Allgemeiner Überblick
TensorFlow ist, allgemein ausgedrückt, ein Software-Framework für numerische Berechnungen, die auf Datenflussgraphen beruhen. Es ist aber vor allem als Schnittstelle zum Beschreiben und Implementieren maschineller Lernalgorithmen gedacht, vor allem von Deep-Learning-Netzen.
TensorFlow wurde im Hinblick auf Portierbarkeit entworfen, sodass die Berechnungsgraphen in ganz unterschiedlichen Umgebungen und auf vielerlei Hardwareplattformen ausführbar sind. Mit im Wesentlichen identischem Code lässt sich ein und dasselbe TensorFlow-Netz beispielsweise in der Cloud, über einen Cluster verteilt oder auf einem einzelnen Laptop anlernen. Es kann auf einem dedizierten Server Vorhersagen liefern und lässt sich auf mobilen Plattformen wie Android oder iOS oder einem Kleincomputer wie dem Raspberry Pi betreiben. TensorFlow ist natürlich auch mit den Betriebssystemen Linux, MacOS und Windows kompatibel.
Die Kernkomponente von TensorFlow ist in C++ geschrieben und besitzt zwei primäre Schnittstellen zu Hochsprachen, in denen sich Berechnungsgraphen beschreiben und ausführen lassen. Die am weitesten entwickelte Schnittstelle ist in Python geschrieben und wird von den meisten Forschern und Datenanalytikern genutzt. Die C++-Schnittstelle bietet eine API auf niedrigerer Ebene, die für effizientes Ausführen im Embedded-Bereich oder anderen Szenarien nützlich ist.
Neben der Portierbarkeit ist ein weiterer Hauptvorteil von TensorFlow seine Flexibilität, wodurch Forscher und Datenanalytiker Modelle relativ leicht formulieren können. Es ist bisweilen erhellend, sich die moderne Deep-Learning-Forschung wie das Spielen mit »LEGO-ähnlichen« Bausteinen vorzustellen, wobei man einzelne Steine im Netz durch andere ersetzt, schaut, was passiert, und bisweilen neue Bausteine entwirft. Wie wir das gesamte Buch hindurch sehen werden, bietet TensorFlow hilfreiche Werkzeuge für den Umgang mit diesen modularen Bausteinen sowie eine flexible Programmierschnittstelle, mit der sich neue Elemente schreiben lassen. Deep-Learning-Netze werden durch einen Feedback-Prozess namens Backpropagation angelernt, der zur Optimierung das Gradientenverfahren anwendet. TensorFlow unterstützt viele Optimierungsverfahren, die alle automatisch differenzieren können, sodass der Nutzer nicht schon im Voraus Gradienten angeben muss, sondern TensorFlow die partiellen Ableitungen anhand des Berechnungsgraphen und der vom Nutzer angegebenen Verlustfunktion ermittelt. Um den Anlernprozess zu beobachten, Fehler zu finden, Abläufe zu veranschaulichen und Experimente zu vereinheitlichen, bietet TensorFlow mit TensorBoard ein einfaches Visualisierungswerkzeug (Abbildung 1-6), das mit dem Webbrowser arbeitet und das wir im Buch immer wieder verwenden werden.
Abstraktionsbibliotheken sind der Schlüssel zu einer effizienten Nutzung der Flexibilität von TensorFlow. Bei den modernsten Deep-Learning-Netzen für Computersehen oder NLU ist das Schreiben von Code für TensorFlow mit einem gewissen Aufwand verbunden – dies kann zu einem komplexen, langen und schwerfälligen Unterfangen werden. Abstraktionsbibliotheken wie Keras und TF-Slim bieten einen vereinfachten Zugriff auf die der Bibliothek zugrunde liegenden »LEGO-Steine«, um einfacher Berechnungsgraphen zu erstellen und anzulernen sowie Vorhersagen zu treffen. Ein weiterer Erfolgsfaktor für Datenanalytiker und Softwareingenieure sind die mit TF-Slim und TensorFlow ausgelieferten angelernten Modelle. Diese Modelle wurden an riesigen Datenmengen unter Nutzung großer Rechenkapazitäten angelernt, an die man sonst nur schwer herankäme und die in jedem Fall nur mit erheblichem Aufwand zum Einsatz zu bringen wären. Mit Keras oder TF-Slim ist es beispielsweise möglich, diese fortgeschrittenen Modelle mit nur wenigen Codezeilen zur Vorhersage anhand eigener Daten zu nutzen oder sie auf neue Daten abzustimmen.
Abbildung 1-6: TensorBoard, das Visualisierungswerkzeug in TensorFlow, mit dem der Anlernprozess und Experimente überwacht, auf Fehler untersucht und analysiert werden.
Die Flexibilität und Portierbarkeit von TensorFlow ermöglichen einen glatten Übergang von der Entwicklung zum laufenden Betrieb, sodass Datenanalytiker ihre Modelle schneller in Produkte einbauen und Softwareingenieure algorithmische Ideen in robusten Code umwandeln können.
Außer Flexibilität und Portierbarkeit besitzt TensorFlow jedoch noch weitere Eigenschaften, die es für die Arbeit an Praxisanwendungen von KI-Systemen attraktiv machen. Es unterstützt von Haus aus verteiltes Anlernen – tatsächlich lernen Google und andere Unternehmen damit auf Rechnerclustern riesige Netze mit gigantischen Datenmengen an. Code, der für einen einzelnen Prozessor geschrieben wurde, kann mit wenigen Änderungen auch auf mehreren lokalen Prozessoren genutzt werden. Auch bei der Umstellung vom lokalen auf den verteilten Betrieb ändert sich der Code nur relativ geringfügig, wodurch TensorFlow für den Einsatz in der Cloud, etwa auf Amazon Web Services (AWS) oder der Google-Cloud, besonders interessant wird. Außerdem werden wir im Verlauf des Buchs zahlreiche Funktionen von TensorFlow kennenlernen, die die Skalierbarkeit weiter verbessern. Dazu gehören die Unterstützung von asynchronen Berechnungen durch Threading und Warteschlangen, effiziente Ein- und Ausgabe und Datenformate und vieles mehr.
Deep Learning entwickelt sich in hohem Tempo weiter, und auch TensorFlow erfährt häufig neue, spannende Verbesserungen hinsichtlich Benutzerfreundlichkeit, Leistungsfähigkeit und Nützlichkeit.
Zusammenfassung
Aufgrund der in diesem Kapitel beschriebenen Werkzeuge und Merkmale wird klar, warum TensorFlow innerhalb eines Jahrs so viel Aufmerksamkeit erhalten hat. Dieses Buch möchte Sie zunächst schnell mit den Grundlagen vertraut machen, sodass Sie arbeitsbereit sind. Anschließend werden wir anhand zahlreicher spannender praktischer Beispiele tiefer in die Welt von TensorFlow eintauchen.
KAPITEL 2
Erste Schritte mit TensorFlow
In diesem Kapitel beginnen wir unsere Reise mit zwei funktionierenden Beispielen für TensorFlow. Das eine (ein traditionelles »Hallo Welt«-Programm) ist zwar kurz und einfach, enthält aber bereits viele wichtige Elemente, die wir in späteren Kapiteln eingehend behandeln. Mit dem anderen, einem ersten vollständigen Machine-Learning-Modell, beginnen Sie Ihre Reise zu modernem maschinellem Lernen mit TensorFlow.
Bevor wir anfangen, gehen wir kurz auf die Installation von TensorFlow ein¹. Für einen schnellen und schmerzfreien Einstieg installieren wir nur die CPU-Version und heben uns die GPU-Version für später auf.² (Wenn Sie nicht wissen, was es damit auf sich hat, macht das erst einmal nichts.) Falls Sie TensorFlow bereits installiert haben, springen Sie zum zweiten Abschnitt.
TensorFlow installieren
Falls Sie eine saubere Python-Installation verwenden (die Sie womöglich extra zum Erlernen von TensorFlow aufgesetzt haben), können Sie mit der einfachen pip-Installation beginnen:
$ pip install tensorflow
Dieser Ansatz hat jedoch den Nachteil, dass TensorFlow bereits existierende Pakete ggf. durch andere Versionen ersetzt, um seine Abhängigkeiten zu erfüllen. Benutzen Sie dieselbe Python-Installation noch für weitere Zwecke, ist das ein Problem. Eine übliche Lösung besteht darin, TensorFlow in einer virtuellen Umgebung zu installieren, die mit einem Werkzeug namens virtualenv verwaltet wird.
Es kann sein, dass Sie virtualenv auf Ihrem Rechner installieren müssen. Geben Sie dazu Folgendes ein:
$ pip install virtualenv
Weitere Anweisungen finden Sie unter http://virtualenv.pypa.io.
Um TensorFlow in einer virtuellen Umgebung zu installieren, müssen Sie zunächst die virtuelle Umgebung erstellen – in diesem Buch haben wir uns entschieden, virtuelle Umgebungen in den Ordner ~/envs zu legen, aber Sie können dafür auch einen anderen Ort wählen:
$ cd ~
$ mkdir envs
$ virtualenv ~/envs/tensorflow
Damit erzeugen Sie eine virtuelle Umgebung namens tensorflow in ~/envs (die als Ordner ~/envs/tensorflow auftauchen wird). Sie können die Umgebung folgendermaßen aktivieren:
$ source ~/envs/tensorflow/bin/activate
Der Prompt sollte sich nun ändern und die aktivierte Umgebung anzeigen:
(tensorflow)$
Nun installiert der Befehl
(tensorflow)$ pip install tensorflow
TensorFlow in die virtuelle Umgebung, ohne andere auf Ihrem Rechner installierte Pakete zu beeinflussen.
Um schließlich die virtuelle Umgebung zu verlassen, geben Sie
(tensorflow)$ deactivate
ein, woraufhin Sie wieder zum normalen Prompt zurückkehren sollten:
$
TensorFlow für Windows-Nutzer
Bis vor Kurzem war TensorFlow dafür berüchtigt, auf Windows-Maschinen nur schwer benutzbar zu sein. Ab TensorFlow 0.12 gibt es jedoch eine ganz einfache Windows-Integration:
pip install tensorflow
für die CPU-Version oder:
pip install tensorflow-gpu
für die GPU-fähige Version (vorausgesetzt, Sie haben bereits CUDA 8).
Nun, da wir eine Grundinstallation von TensorFlow haben, können wir unsere ersten Anwendungsbeispiele in Angriff nehmen. Wir werden der guten alten Tradition folgen, mit einem »Hallo Welt«-Programm zu beginnen.
Hallo Welt
Unser erstes Beispiel ist ein einfaches Programm, das die Wörter »Hallo« und »Welt!« zusammenfügt und die Ausgabe anzeigt – den Ausruf »Hallo Welt!«. Dieses Beispiel ist zwar schlicht und überschaubar, zeigt aber viele der Kernelemente von TensorFlow und der Unterschiede zu einem gewöhnlichen Python-Programm.
Wir empfehlen, dass Sie dieses Beispiel auf Ihrem Rechner ausführen und ein wenig damit herumspielen, um zu sehen, was alles möglich ist. Als Nächstes werden wir die Codezeilen durchgehen und jedes Element einzeln besprechen.
Als Erstes führen wir einen einfachen Test der Installation und Version durch. (Falls Sie die virtualenv-Installation gewählt haben, aktivieren Sie die Umgebung, bevor Sie den TensorFlow-Code ausführen.)
import tensorflow as tf
print(tf.__version__)
Wenn alles klappt, wird die Version von TensorFlow angezeigt, die Sie auf Ihrem System installiert haben. Treten bei der weiteren Arbeit Probleme auf, dann liegt das am wahrscheinlichsten an unpassenden Versionen.
Beispiel 2-1 zeigt das vollständige »Hallo Welt«-Beispiel.
Beispiel 2-1: »Hallo Welt« mit TensorFlow
import tensorflow as tf
h = tf.constant(Hallo
)
w = tf.constant( Welt!
)
hw = h + w
with tf.Session() as sess:
ans = sess.run(hw)
print(ans)
Wir gehen davon aus, dass Sie mit Python und import-Anweisungen vertraut sind, sodass die erste Zeile:
import tensorflow as tf
keiner Erklärung bedarf.
Dann definieren wir die Konstanten Hallo
and Welt!
und fügen sie zusammen:
import tensorflow as tf
h = tf.constant(Hallo
)
w = tf.constant( Welt!
)
hw = h + w
Nun fragen Sie sich vielleicht, inwiefern (und ob überhaupt) sich das von dem einfachen Python-Code für diese Aufgabe unterscheidet:
ph = Hallo
pw = Welt!
phw = h + w
Der Knackpunkt hierbei ist der Wert der Variablen hw in den beiden Fällen. Wir können ihn uns mit der Funktion print ansehen. Im Fall von reinem Python erhalten wir:
>print(phw)
Hallo Welt!
Im Fall von TensorFlow ist die Ausgabe jedoch etwas völlig anderes:
>print(hw)
Tensor(add:0
, shape=(), dtype=string)
Das haben Sie wahrscheinlich nicht erwartet!
Im nächsten Kapitel erklären wir das Konzept der Berechnungsgraphen in TensorFlow