Konvolutionelle neuronale Netze zeichnen

Gibt es eine Software, die zum Zeichnen von Zahlen in wissenschaftlichen Arbeiten verwendet wird, die die Struktur neuronaler Netze (insbesondere Faltungsnetze) beschreiben?

Die nächste Lösung für das, was ich will, ist die TikZ LaTeX-Bibliothek, die solche Diagramme mit einer Beschreibung des Netzwerks mithilfe von Code erstellen kann (sie kann keine Faltungsschichten verarbeiten ):

Tikz-neuronales Netz Quelle

Andere Software, die die Netzwerkstruktur beschreibt, aber nicht in 3D visualisiert, sind:

Die Diagramme, die ich erstellen möchte, folgen einem ähnlichen Muster, daher bin ich interessiert zu wissen, ob es eine spezialisiertere Software als GIMP/GraphViz/Gephi/InkScape oder sogar Powerpoint gibt, um dies zu erreichen. Es wäre toll, wenn es wie TikZ programmierbar wäre.

Hier sind einige Beispiele für Figuren, die ich konstruieren möchte (mit ihren Quellen unten):

Geben Sie hier die Bildbeschreibung ein Quelle

LeNet5 Quelle

Tiefes Gesicht Quelle

Ich bin sicher, dass tikz diese Graphen mit genügend Aufwand erzeugen kann – Sie können einige erstaunliche Beispiele für die Verwendung von tikz auf TeX - LaTeX und texample finden . Ich konnte sehen, dass das Eingabeformat möglicherweise nicht Ihren Wünschen entspricht. Könnten Sie klarstellen, was Sie mit "es kann keine Faltungsschichten verarbeiten" meinen?
Tikz wäre großartig, obwohl ich kein Beispiel gefunden habe. Das Bit der Faltungsschichten besteht in den Beispielen nur aus geschichteten Quadraten oder rechteckigen Prismen.
Möchten Sie die Diagrammerstellung programmgesteuert steuern, oder können Sie das Diagramm mithilfe einer GUI-Schnittstelle erstellen? Möchten Sie es auch auf einer bestimmten Plattform? Ist 3D auch eine Voraussetzung?
Ich muss in der Lage sein, 3D wie in den Beispielen gezeigt zu visualisieren (keine Notwendigkeit, das Diagramm aus verschiedenen Blickwinkeln anzeigen zu können). Die GUI ist in Ordnung, solange es einfach ist, zurückzukommen und eine Ebene zu entfernen oder eine Ebene hinzuzufügen, ohne dass es zu viel Zeit in Anspruch nimmt, z. B. im zweiten Beispieldiagramm mit einem A - ich möchte F6- und S2-Ebenen entfernen, sollte ich tun können dies durch löschen und verbindungen wird sich regeln.

Antworten (3)

Ich habe ein einfaches Python-Skript zum Zeichnen von Convnet mit einstellbaren Parametern geschrieben. https://github.com/gwding/draw_convnet

draw_convnet Beispielbild

Es könnte für Sie nützlich sein, wenn Sie nur eine einfache/nicht ausgefallene Illustration benötigen. Es kopiert den Stil von Abbildung 2 in "Gradientenbasiertes Lernen, angewendet auf die Dokumentenerkennung".

Vielen Dank, dass Sie sich die Zeit genommen haben, dies zu schreiben und zu teilen.
@gwding Vielen Dank, Sir, für diesen nützlichen Beitrag. Ich versuche, mit den Parametern im Code zu spielen, aber ich erhalte Fehler im Zusammenhang mit dem Index außerhalb der Grenzen. Haben Sie eine anschaulichere Anleitung zum Ändern dieser Parameter?
@IbrahimAmer Ich habe keine schriftlichen Anweisungen. Wenn Sie Ihre Fehlermeldung in ein Github-Problem in diesem Repo einfügen können, kann ich möglicherweise helfen
@gwding Wie haben Sie 18x18-Dimensionen erhalten, wenn Sie Faltungen mit einem 5x5-Kernel durchgeführt haben? Ich gehe davon aus, dass der Text unter jedem Schritt bezeichnet, was dort ausgeführt wird, um das nächste Bild zu erhalten, wie mit Flatten step abgeschlossen werden kann.
@AleksandarJovanovic Die Größe würde von Kernelgröße, Schrittgröße und Polsterung abhängen. Ich erinnere mich nicht an die genauen Einstellungen. aber es liegt wahrscheinlich am Schritt
Ich habe die Eingabe auf 64x64 geändert und sie überschneidet sich mit der zweiten Ebene. Wie behebe ich das?
@kong Sie können versuchen, mit Zahlen in x_diff_list zu spielen

Auch hierfür habe ich ein In-Browser-Tool geschrieben: NN-SVG und die Quelle finden Sie hier . Wählen Sie zwischen FCNN-Layout, LeNet-Layout und AlexNet-Layout.

Geben Sie hier die Bildbeschreibung ein

hast du die quelle auf github? Ich muss es forken, danke :)
Der PC hängt sich auf, wenn ich FFNN mit einer Eingabeebenengröße von 300, 256, 128 versuche

Das ist großartig: https://github.com/HarisIqbal88/PlotNeuralNet . Löst mein Problem gut und ist in Python/Tex geschrieben.