Erste Schritte mit Tensorflow

Erste Schritte mit Tensorflow
TensorFlow ist Googles Gehirnkind und im Kern ist es eine Bibliothek für numerische Berechnung. Es ist in C/C ++ geschrieben und hat eine sehr flexible API. Diese API kann mit einem Python-Front-End miteinander verbunden werden, damit Sie kleine Ausschnitte Python-Code schreiben können, um komplizierte Probleme zu lösen. Eine flexible und konsistente API ermöglicht es den Entwicklern auch, denselben Front-End-Code zu verwenden, um auf verschiedenen Plattformen wie NVIDIA GPUs, CPUs Allgemein und sogar mobile und eingebettete Geräte auszuführen, die jeweils eine ganz andere Implementierung im Back-End haben.

TensorFlow hat im Bereich des maschinellen Lernens immens verwendet, genau weil maschinelles Lernen eine Menge Zahlenkritiker beinhaltet und als generalisierte Problemlösungstechnik verwendet wird. Und obwohl wir mit Python mit damit interagieren werden, hat es Frontendungen für andere Sprachen wie Go, Knoten.JS und sogar C#.

TensorFlow ist wie eine schwarze Box, die alle mathematischen Feinheiten darin verbirgt, und der Entwickler ruft nur die richtigen Funktionen auf, um ein Problem zu lösen. Aber welches Problem?

Maschinelles Lernen (ML)

Angenommen, Sie entwerfen einen Bot, um ein Schachspiel zu spielen. Aufgrund der Art und Weise, wie das Schach entworfen ist, wie sich die Teile bewegen, und das gut definierte Ziel des Spiels ist es durchaus möglich, ein Programm zu schreiben, das das Spiel sehr gut spielen würde. In der Tat würde es die gesamte Menschheit in Schach überlisten. Es würde genau wissen, welche Bewegung es machen muss, um den Zustand aller Stücke auf dem Brett zu machen.

Ein solches Programm kann jedoch nur Schach spielen. Die Regeln des Spiels werden in die Logik des Codes eingebunden, und alles, was das Programm tut. Es ist kein Allzweckalgorithmus, mit dem Sie jeden Spielbot entwerfen können.

Mit maschinellem Lernen verschiebt sich das Paradigmen und die Algorithmen werden immer allgemeiner.

Die Idee ist einfach, es beginnt mit der Definition eines Klassifizierungsproblems. Zum Beispiel möchten Sie den Prozess der Identifizierung der Spinnenarten automatisieren. Die Arten, die Ihnen bekannt sind.

Hier ist der erste Schritt für den Menschen, die Merkmale verschiedener einzelner Spinnen zu bestimmen. Wir würden Daten über die Länge, Breite, Körpermasse und Farbe einzelner Spinnen sowie die Arten, zu denen sie gehören, liefern:

Länge Breite Masse Farbe Textur Spezies
5 3 12 Braun glatt Vaters lange Beine
10 8 28 Braun schwarz behaart Tarantel

Eine große Sammlung solcher einzelnen Spinnendaten wird verwendet, um den Algorithmus zu „trainieren“, und ein anderer ähnlicher Datensatz wird zum Testen des Algorithmus verwendet, um zu sehen, wie gut es gegen neue Informationen ist, die sie noch nie zuvor begegnet sind, die wir jedoch bereits kennen, die wir bereits kennen, die wir bereits kennen, aber die wir bereits kennen Antwort auf.

Der Algorithmus beginnt randomisierte Weise. Das heißt, jede Spinne, unabhängig von ihren Merkmalen. Wenn es 10 verschiedene Arten in unserem Datensatz gibt, würde dieser naive Algorithmus aufgrund der leichten Zeit ungefähr 1/10 der Zeit die richtige Klassifizierung erhalten.

Aber dann würde der Aspekt des maschinellen Lernens beginnen zu übernehmen. Es würde bestimmte Merkmale mit einem bestimmten Ergebnis in Verbindung bringen. Zum Beispiel sind haarige Spinnen wahrscheinlich Tarantulas, ebenso wie die größeren Spinnen. Wenn also eine neue Spinne, die groß und haarig ist. Beachten Sie, wir arbeiten immer noch mit Wahrscheinlichkeiten, dies liegt daran, dass wir von Natur aus mit einem probabilistischen Algorithmus arbeiten.

Der Lernteil funktioniert, indem die Wahrscheinlichkeiten geändert werden. Zunächst beginnt der Algorithmus damit, Individuen zufällig eine "Spezies" zuzuweisen, indem sie zufällige Korrelationen wie "haarig" und "daddy langen Beinen" erstellen, die "haarig" sind und "daddy lange Beine" sind. Wenn es eine solche Korrelation herstellt und der Trainingsdatensatz nicht damit zustimmt, wird diese Annahme fallen gelassen.

In ähnlicher Weise wird sie jedes Mal stärker, wenn eine Korrelation in mehreren Beispielen gut funktioniert. Diese Methode des Stolpers in die Wahrheit ist aufgrund der mathematischen Feinheiten, die Sie als Anfänger als Anfänger nicht Sorgen machen möchten, bemerkenswert effektiv.

Tensorflow und Training Ihres eigenen Blumenklassifikators

TensorFlow nimmt die Idee des maschinellen Lernens noch weiter. Im obigen Beispiel waren Sie verantwortlich für die Bestimmung der Merkmale, die eine Spinnespezies von einer anderen unterscheiden. Wir mussten einzelne Spinnen sorgfältig messen und Hunderte solcher Aufzeichnungen erstellen.

Aber wir können es besser machen, indem wir dem Algorithmus nur Rohbilddaten bereitstellen, wir können den Algorithmus Muster finden und verschiedene Dinge über das Bild verstehen, z. B. das Erkennen der Formen im Bild und dann verstehen, was die Textur verschiedener Oberflächen ist, die Farbe, die Farbe , und so weiter und so fort. Dies ist der Beginn der Computer Vision und Sie können es auch für andere Eingaben verwenden, z. All dies fällt unter den Dachbegriff von "Deep Learning", in dem maschinelles Lernen auf sein logisches Extrem gebracht wird.

Diese generalisierte Reihe von Begriffen kann dann spezialisiert sein, wenn man mit vielen Bildern von Blumen zu tun und sie kategorisieren.

Im folgenden Beispiel werden wir einen Python2 verwenden.7 Front-End-zur Schnittstelle mit TensorFlow und wir werden PIP (nicht PIP3) verwenden, um den TensorFlow zu installieren. Die Unterstützung von Python 3 ist immer noch ein kleiner Fehler.

Um Ihren eigenen Bildklassifizierer zu erstellen, verwenden wir ihn zuerst mit TensorFlow Pip:

$ pip installieren TensorFlow

Als nächstes müssen wir die klonen Tensorflow-for-Poets-2 Git -Repository. Dies ist ein wirklich guter Ausgangspunkt aus zwei Gründen:

  1. Es ist einfach und einfach zu bedienen
  2. Es wird bis zu einem gewissen Grad vorgeschrieben. Zum Beispiel ist der Blumenklassifizierer bereits trainiert, um zu verstehen, welche Textur er sieht und welche Formen er sich ansieht, sodass es rechnerisch weniger intensiv ist.

Lassen Sie uns das Repository erhalten:

$ git klone https: // github.com/googlecodelabs/Tensorflow-für-Poten-2
$ CD Tensorflow-for-PoT-2

Dies wird unser Arbeitsverzeichnis sein, daher sollten alle Befehle von nun an ausgestellt werden.

Wir müssen den Algorithmus immer noch für das spezifische Problem der Erkennung von Blumen ausbilden. Dafür benötigen wir Trainingsdaten. Lassen Sie uns Folgendes erhalten:

$ curl http: // herunterladen.Tensorflow.org/example_images/flower_photos.TGZ
| tar xz -c tf_files

Das Verzeichnis… ./TensorFlow-for-Poets-2/Tf_files Enthält eine Tonne dieser Bilder, die richtig gekennzeichnet und zur Verwendung bereit sind. Die Bilder werden für zwei verschiedene Zwecke erfolgen:

  1. Schulung des ML -Programms
  2. Testen des ML -Programms

Sie können den Inhalt des Ordners überprüfen tf_files Und hier werden Sie feststellen, dass wir uns auf nur 5 Kategorien von Blumen einstellen, nämlich Gänseblümchen, Tulpen, Sonnenblumen, Löwenzahn und Rosen.

Training des Modells

Sie können den Trainingsprozess starten, indem Sie zuerst die folgenden Konstanten für die Größe aller Eingabebilder in einer Standardgröße einrichten und eine leichte Mobilenet-Architektur verwenden:

$ Image_size = 224
$ Architecture = "mobilenet_0.50 _ $ image_size "

Rufen Sie dann das Python -Skript auf, indem Sie den Befehl ausführen:

$ python -m Skripte.\ \ retrainieren
--bottleneck_dir = tf_files/Engpässe \
--HOW_MANY_TRINING_STEPS = 500 \
--model_dir = tf_files/ models/ \
--summaries_dir = tf_files/Training_summaries/"$ architecture" \
--output_graph = tf_files/retaNated_graph.pb \
--output_labels = tf_files/radinierte_labels.txt \
--Architecture = "$ Architecture" \
--Image_dir = tf_files/flower_photos

Während hier viele Optionen angegeben sind, geben die meisten von ihnen Ihre Eingabedatenverzeichnisse und die Anzahl der Iteration sowie die Ausgabedateien an, bei denen die Informationen zum neuen Modell gespeichert werden würden. Dies sollte nicht länger als 20 Minuten dauern, um auf einem mittelmäßigen Laptop zu laufen.

Sobald das Drehbuch sowohl das Training als auch das Testen beendet hat.

Verwenden des geschulten Modells

Sie sind jetzt bereit, dieses Modell für die Bilderkennung eines neuen Bildes einer Blume zu verwenden. Wir werden dieses Bild verwenden:

Das Gesicht der Sonnenblume ist kaum sichtbar und dies ist eine große Herausforderung für unser Modell:

Um dieses Bild von Wikimedia Commons zu erhalten, verwenden Sie WGet:

$ wget https: // hochladen.Wikimedia.org/wikipedia/commons/2/8/sunflower_head_2011_g1.JPG
$ mv sunflower_head_2011_g1.jpg tf_files/unbekannt.JPG

Es wird gerettet als Unbekannt.JPG unter dem tf_files Unterverzeichnis.

Jetzt werden wir für den Moment der Wahrheit sehen, was unser Modell zu diesem Bild zu sagen hat.Um das zu tun, berufen wir die label_image Skript:

$ python -m Skripte.label_image --graph = tf_files/radinainierte_graph.pb --
Image = tf_files/unbekannt.JPG

Sie würden eine ähnliche Ausgabe erhalten:

Die Zahlen neben dem Blumentyp repräsentieren die Wahrscheinlichkeit, dass unser unbekanntes Bild zu dieser Kategorie gehört. Zum Beispiel ist es 98.04% sicher, dass das Bild von einer Sonnenblume ist und es nur 1 ist.37% Chance, dass es eine Rose ist.

Abschluss

Selbst mit sehr mittelmäßigen Rechenressourcen sehen wir eine erstaunliche Genauigkeit bei der Identifizierung von Bildern. Dies zeigt deutlich die Leistung und Flexibilität des Tensorflows.

Von hier an können Sie mit verschiedenen anderen Eingaben experimentieren oder versuchen, Ihre eigene Anwendung mit Python und TensorFlow zu schreiben. Wenn Sie wissen möchten, dass die interne Arbeit des maschinellen Lernens ein wenig besser hier ist, ist dies eine interaktive Möglichkeit für Sie, dies zu tun.