Wenn man eine Arbeit schreibt / eine Präsentation über ein Thema macht, das sich mit neuronalen Netzwerken befasst, visualisiert man normalerweise die Netzwerkarchitektur.
Was sind gute / einfache Möglichkeiten, um gängige Architekturen automatisch zu visualisieren?
machine-learning
neural-network
deep-learning
visualization
Martin Thoma
quelle
quelle
Antworten:
Tensorflow, Keras, MXNet, PyTorch
Wenn das neuronale Netzwerk als Tensorflow-Diagramm angegeben ist, können Sie dieses Diagramm mit TensorBoard visualisieren .
So sieht der MNIST CNN aus:
Sie können Namen / Bereiche (wie "Dropout", "Softmax", "FC1", "Conv1", "Conv2") selbst hinzufügen.
Interpretation
Im Folgenden geht es nur um das linke Diagramm. Ich ignoriere die 4 kleinen Grafiken auf der rechten Hälfte.
Jede Box ist eine Ebene mit Parametern, die gelernt werden können. Zum Schluss fließen die Informationen von unten nach oben. Ellipsen sind Ebenen, die keine gelernten Parameter enthalten.
Die Farbe der Kästchen hat keine Bedeutung.
Ich bin mir nicht sicher, welchen Wert die gestrichelten Kästchen ("Farbverläufe", "Adam", "Speichern") haben.
quelle
Ich habe kürzlich ein Tool zum Zeichnen von NN-Architekturen und zum Exportieren von SVG erstellt, NN-SVG
quelle
In Caffe können Sie mit caffe / draw.py den NetParameter-Protopuffer zeichnen:
In Matlab können Sie view (net) verwenden.
Keras.js :
quelle
Ich würde ASCII-Visualisierungen mit keras-sequential-ascii hinzufügen (Haftungsausschluss: Ich bin der Autor).
Ein kleines Netzwerk für CIFAR-10 (aus diesem Tutorial ) wäre:
Für VGG16 wäre es:
quelle
Es gibt ein Open-Source-Projekt namens Netron
quelle
Hier ist noch ein anderer Weg - Dotnets , die Graphviz verwenden und stark von diesem Beitrag von Thiago G. Martins inspiriert sind .
quelle
Keras
Das Modul keras.utils.vis_utils bietet Dienstprogrammfunktionen zum Plotten eines Keras-Modells (mithilfe von graphviz).
Im Folgenden wird ein Netzwerkmodell gezeigt, bei dem die erste verborgene Ebene 50 Neuronen aufweist und 104 Eingabevariablen erwartet.
quelle
Das Python-Paket
conx
kann Netzwerke mit Aktivierungen mit der Funktionnet.picture()
zum Erzeugen von SVG-, PNG- oder PIL-Bildern wie folgt visualisieren :Conx basiert auf Keras und kann Keras-Modelle einlesen. Die Farbzuordnung für jede Bank kann geändert werden und es können alle Bankarten angezeigt werden.
Weitere Informationen finden Sie unter: http://conx.readthedocs.io/en/latest/
quelle
Ich habe an einem Drag-and-Drop-Visualizer für neuronale Netze (und mehr) gearbeitet. Hier ist ein Beispiel für eine Visualisierung für eine LeNet-ähnliche Architektur. Modelle mit Fan-Out und Fan-In lassen sich ebenfalls recht einfach modellieren. Sie können die Website unter https://math.mit.edu/ennui/ besuchen.
quelle
In R
nnet
gibt es keine Plotfunktion, aber Code dafür wird hier bereitgestellt .Alternativ können Sie das neuere und IMHO-bessere Paket verwenden,
neuralnet
das eineplot.neuralnet
Funktion enthält. Sie können also einfach Folgendes tun:neuralnet
wird nicht so oft verwendet,nnet
dannet
es viel älter ist und mit r-cran geliefert wird. Esneuralnet
verfügt jedoch über mehr Trainingsalgorithmen, einschließlich einer stabilen Backpropagation, die selbst in Paketen wie Tensorflow fehlt, die für die Auswahl von Hyperparametern wesentlich robuster ist und insgesamt über mehr Funktionen verfügt.quelle
Es gibt einige neuartige alternative Bemühungen zur Visualisierung neuronaler Netze.
Bitte beachten Sie diese Artikel:
Atemberaubende KI-Gehirnscans zeigen, was Maschinen sehen, wenn sie neue Fähigkeiten erlernen
In einem KI-Gehirn - Wie sieht maschinelles Lernen aus?
Diese Ansätze sind mehr auf die Visualisierung des neuronalen Netzwerkbetriebs ausgerichtet, die NN-Architektur ist jedoch auch in den resultierenden Diagrammen etwas sichtbar.
Beispiele:
quelle
Das ist nicht gerade praktisch für Artikel, aber sehr nützlich, um Leuten zu zeigen, die nicht viel über neuronale Netze wissen, wie ihre Topologie aussehen könnte. Mit dieser Javascript-Bibliothek (Neataptic) können Sie Ihr Netzwerk visualisieren:
quelle
Lesen Sie den beliebten Aufsatz " Verständnis neuronaler Netze durch Tiefenvisualisierung", in dem die Visualisierung von Faltungsnetzen behandelt wird. Die Implementierung zeigt nicht nur jede Ebene an, sondern zeigt auch die Aktivierungen, Gewichte, Dekonvolutionen und viele andere Dinge, die im Papier ausführlich diskutiert werden. Der Code ist in
caffe'
. Das Interessante ist, dass Sie das vortrainierte Modell durch Ihr eigenes ersetzen können.quelle
Tensorspace-JS ist ein fantastisches Tool zur 3D-Visualisierung der Netzwerkarchitektur:
https://tensorspace.org/
und hier ist ein netter Beitrag darüber, wie man ein Programm schreibt:
https://medium.freecodecamp.org/tensorspace-js-a-way-to-3d-visualize-neural-networks-in-browsers-2c0afd7648a8
quelle
Netscope ist mein alltägliches Werkzeug für Caffe-Modelle.
quelle