TensorWatch ist ein Debugging- und Visualisierungsinstrument für Datenwissenschaft, Deep -Lernen und Verstärkungslernen aus Microsoft Research. Es funktioniert in Jupyter Notebook, um Echtzeit-Visualisierungen Ihres Trainings für maschinelles Lernen anzuzeigen und mehrere andere wichtige Analyseaufgaben für Ihre Modelle und Daten auszuführen.
TensorWatch ist so konzipiert, dass es flexibel und erweiterbar ist, sodass Sie auch Ihre eigenen benutzerdefinierten Visualisierungen, Benutzeroberflächen und Dashboards erstellen können. Neben dem traditionellen "What-you-see-is-What-you-Log" -Ansatz hat es auch eine einzigartige Fähigkeit, willkürliche Abfragen gegen Ihren Live-ML-Trainingsprozess auszuführen, einen Stream infolge der Abfrage zurückzugeben und diesen Stream mithilfe dieser Stream anzusehen Sie wählen einen Visualizer (wir nennen diesen faulen Protokollierungsmodus).
TensorWatch wird stark entwickelt und haben das Ziel, eine Plattform für das Debuggen von maschinellem Lernen in einem einfach zu verwendenden, erweiterbaren und hackbaren Paket bereitzustellen.

pip install tensorwatch
TensorWatch unterstützt Python 3.x und wird mit Pytorch 0.4-1.x getestet. Die meisten Funktionen sollten auch mit TensorFlow Eifrig Tensoren funktionieren. TensorWatch verwendet GraphViz, um Netzwerkdiagramme zu erstellen. Abhängig von Ihrer Plattform müssen Sie es möglicherweise möglicherweise manuell installieren.
Hier ist ein einfacher Code, der eine Ganzzahl und sein Quadrat als Tupel für TensorWatch anmelden:
import tensorwatch as tw
import time
# streams will be stored in test.log file
w = tw.Watcher(filename='test.log')
# create a stream for logging
s = w.create_stream(name='metric1')
# generate Jupyter Notebook to view real-time streams
w.make_notebook()
for i in range(1000):
# write x,y pair we want to log
s.write((i, i*i))
time.sleep(1)
Wenn Sie diesen Code ausführen, werden Sie einen Jupyter -Notebook -Datei test.ipynb in Ihrem Skriptordner erstellt. Aus einem Eingabeaufforderung ein Eingabeaufforderung ein Eingabeaufforderung jupyter notebook und wählen Sie test.ipynb . Wählen Sie im Menü Cell> ALLE Führen Sie das Echtzeit-Zeilendiagramm aus, wenn die Werte in Ihrem Skript geschrieben werden.
Hier ist die Ausgabe, die Sie in Jupyter Notebook sehen werden:

Um tiefer in die verschiedenen anderen Funktionen einzutauchen, finden Sie Tutorials und Notizbücher.
Wenn Sie in einen TensorWatch -Stream schreiben, erhalten die Werte serialisiert und an einen TCP/IP -Socket sowie die von Ihnen angegebene Datei gesendet. Aus Jupyter Notebook laden wir die zuvor protokollierten Werte aus der Datei und hören dann diesen TCP/IP -Socket für zukünftige Werte an. Der Visualizer hört den Stream an und macht die Werte, die sie ankommen.
Ok, das ist also eine sehr vereinfachte Beschreibung. Die TensorWatch -Architektur ist tatsächlich viel mächtiger. Fast alles in TensorWatch ist ein Stream . Dateien, Steckdosen, Konsolen und sogar Visualisierer sind selbst Streams. Eine coole Sache über TensorWatch -Streams ist, dass sie alle anderen Streams hören können. Auf diese Weise kann TensorWatch ein Datenflussdiagramm erstellen. Dies bedeutet, dass ein Visualizer viele Streams gleichzeitig anhören kann, von denen jede eine Datei, eine Steckdose oder einen anderen Stream sein kann. Sie können dies rekursiv erweitern, um willkürliche Datenflussdiagramme zu erstellen. TensorWatch -Decouples Streams von der Art und Weise, wie sie gespeichert werden und wie sie sich visualisiert werden.
Im obigen Beispiel wird das Zeilendiagramm als Standardvisualisierung verwendet. TensorWatch unterstützt jedoch viele andere Diagrammtypen, darunter Histogramme, Kreisdiagramme, Streudiagramme, Balkendiagramme und 3D -Versionen vieler dieser Diagramme. Sie können Ihre Daten protokollieren, den gewünschten Diagrammtyp angeben und TensorWatch sich um den Rest kümmern lassen.
Eine der wesentlichen Stärken von TensorWatch ist die Fähigkeit, mühelos benutzerdefinierte Visualisierungen zu kombinieren, zu komponieren und kundenspezifische Visualisierungen zu erstellen. Sie können beispielsweise eine beliebige Anzahl von Streams im selben Diagramm visualisieren. Oder Sie können den gleichen Strom in vielen verschiedenen Diagrammen gleichzeitig visualisieren. Oder Sie können eine beliebige Reihe von Visualisierungen nebeneinander platzieren. Sie können sogar Ihr eigenes Widget für benutzerdefinierte Visualisierung erstellen, indem Sie eine neue Python -Klasse erstellen und einige Methoden implementieren.
Jeder TensorWatch -Stream kann eine Metrik Ihrer Wahl enthalten. Standardmäßig speichert TensorWatch alle Streams in einer einzelnen Datei, aber Sie können auch wählen, ob Sie jeden Stream in separaten Dateien speichern oder überhaupt nicht speichern können (z. B. Senden von Streams über Sockets oder direkt in die Konsole, Null auf Festplatte! ). Später können Sie diese Streams öffnen und sie zu einer oder mehreren Visualisierungen leiten. Mit diesem Design können Sie die Ergebnisse Ihrer verschiedenen Experimente in Ihrer Wahl der Visualisierungen leicht vergleichen.
Oft bevorzugen Sie es, Datenanalyse, ML -Training und Tests durchzuführen - alles aus dem Jupyter -Notebook anstelle eines separaten Skripts. TensorWatch kann Ihnen dabei helfen, anspruchsvolle Echtzeit-Visualisierungen mühelos aus Code durchzuführen, der in einem Jupyter-Notebook-End-to-End ausgeführt wird.
Eine einzigartige Funktion in TensorWatch ist die Fähigkeit, den Live -Laufprozess abzufragen, das Ergebnis dieser Abfrage als Stream abzurufen und diesen Stream auf Ihre bevorzugte Visualisierung (en) zu lenken. Sie müssen keine Daten im Voraus protokollieren. Wir nennen diese neue Art, einen faulen Protokollierungsmodus zu debugieren und zu visualisieren.
Wie nachstehend zu sehen, visualisieren wir beispielsweise Eingangs- und Ausgangsbildpaare, die während des Trainings eines Autocoders auf einem Früchten -Datensatz zufällig abgetastet wurden. Diese Bilder wurden im Skript nicht vorher protokolliert. Stattdessen sendet der Benutzer die Abfrage als Python Lambda -Ausdruck, der zu einem Bildernstrom führt, der im Jupyter -Notizbuch angezeigt wird:

Siehe Lazy Logging Tutorial.
TensorWatch nutzt mehrere ausgezeichnete Bibliotheken, darunter HiddenLayer, Torchstat und visuelle Zuschreibung, um die üblichen Debugging- und Analyseaktivitäten in einem konsistenten Paket und einer konsistenten Schnittstelle durchzuführen.
Sie können beispielsweise das Modelldiagramm mit Tensorformen mit einem One-Liner anzeigen:

Sie können Statistiken für verschiedene Ebenen wie Flops, Anzahl der Parameter usw. anzeigen:

Siehe Notebook.
Sie können den Datensatz mithilfe von Techniken wie T-SNE in einem niedrigeren dimensionalen Raum anzeigen:

Siehe Notebook.
Wir möchten verschiedene Instrumente zur Erklärung von Vorhersagen zur Erläuterung von Debugging -Modellen bereitstellen. Derzeit bieten wir mehrere Erklärer für Faltungsnetzwerke an, einschließlich LIME. Beispielsweise unterstreicht die folgenden Bereichen, die dazu führen, dass das ResNet50 -Modell eine Vorhersage für die Klasse 240 für den ImageNet -Datensatz macht:

Siehe Notebook.
Einfaches Protokollierungs -Tutorial
Lazy Logging Tutorial
Verwenden von TensorWatch für Deep Learning Training (MNIST)
Verwenden von TensorWatch für Deep Learning Training (Food360)
Daten mit T-SNE erforschen
Prädikationserklärer für Faltungsnetzwerke
Modelldiagramm und Statistiken anzeigen
Weitere technische Details finden Sie in TensorWatch Paper (EICS 2019 -Konferenz). Bitte zitieren Sie dies als:
@inproceedings{tensorwatch2019eics,
author = {Shital Shah and Roland Fernandez and Steven M. Drucker},
title = {A system for real-time interactive analysis of deep learning training},
booktitle = {Proceedings of the {ACM} {SIGCHI} Symposium on Engineering Interactive
Computing Systems, {EICS} 2019, Valencia, Spain, June 18-21, 2019},
pages = {16:1--16:6},
year = {2019},
crossref = {DBLP:conf/eics/2019},
url = {https://arxiv.org/abs/2001.01215},
doi = {10.1145/3319499.3328231},
timestamp = {Fri, 31 May 2019 08:40:31 +0200},
biburl = {https://dblp.org/rec/bib/conf/eics/ShahFD19},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
Wir würden Ihre Beiträge, Feedback, Fragen und Feature -Anfragen lieben! Bitte stellen Sie ein GitHub -Problem ein oder senden Sie uns eine Pull -Anfrage. Bitte überprüfen Sie den Microsoft -Verhaltenscode und erfahren Sie mehr.
Treten Sie der TensorWatch -Gruppe auf Facebook bei, um auf dem Laufenden zu bleiben oder Fragen zu stellen.
TensorWatch verwendet mehrere Open -Source -Bibliotheken für viele seiner Funktionen. Dazu gehören: HiddenLayer, Torchstat, visuelle Attribution, Pyzmq, Rezeptivfield, Nbformat. Weitere Informationen finden Sie unter install_requires -Abschnitt in Setup.py, um die Liste der Datum zu erhalten.
Dieses Projekt wird unter der MIT -Lizenz veröffentlicht. Bitte überprüfen Sie die Lizenzdatei für weitere Informationen.