[PYTHON] [NNabla] So fügen Sie eine neue Ebene zwischen den mittleren Ebenen eines vorgefertigten Netzwerks hinzu

Einführung

Dies ist der dritte Beitrag zu Qiita. (Artikel 3) Als ich von letztes Mal fortfuhr, während ich nnabla verwendete, fühlte ich mich wie "Ich wünschte, ich hätte diese Art von Informationen in Qiita" Zusammenfassung dessen, was ich in der nnabla-Referenz gefunden habe und dir () (Standard-Python-Funktion, die Mitgliedsvariablen und Funktionen von Argumenten zurückgibt) Ich werde.

1. Anforderungen

-OS: macOS Catalina (Version 10.15.1) ・ Python: 3.5.4 ・ Nnabla: 1.3.0

2. Aufbau eines Netzwerks

Das Beispielnetzwerk ist unten definiert. (Wie Letztes Mal bisher)

article3_add_layer.py


import nnabla as nn
import nnabla.functions as F

# [define network]
x = nn.Variable()
y = F.add_scalar(x, 0.5)  # <-- (1)weit
y = F.mul_scalar(y, -2)

Es ist einfach in Form von $ y = (x + 0,5) \ times2 $.

3. Fügen Sie eine neue Ebene zwischen vorhandenen Zwischenebenen hinzu

Letztes Mal $ y = (x + 0,5) \ times2 $ über $ y = (x + 0,5) ^ 2 \ times2 unter Verwendung des oben erläuterten Inhalts Ich werde Ihnen zeigen, wie Sie es in $ ändern können. Der Code ist unten.

article3_add_layer.py


# [get middle variable]
h1 = y.parent.inputs[0]
additional_layer = F.pow_scalar(h1, 2.0)
redefine_layer = F.mul_scalar(additional_layer, **y.parent.info.args)

# [rewire_on]
y.rewire_on(redefine_layer)

Die Funktionsprüfung wurde unten kurz vor rewire_on oben durchgeführt, wobei dazwischen gedruckt wurde.

article3_add_layer.py


def print_func(f):
    print('{} output = {}'.format(f.name, f.outputs[0].d))

# [print & forward]
x.d.fill(0)
y.forward()
print('--- before ---')
y.visit(print_func)
print('y.d = {}'.format(y.d))
print('')

# [rewire_on]
y.rewire_on(redefine_layer)

# [print & forward]
y.forward()
print('--- after ---')
y.visit(print_func)
print('y.d = {}'.format(y.d))
print('')

Ausgabe

--- before ---
AddScalar output = 0.5
MulScalar output = -1.0
y.d = -1.0

--- after ---
AddScalar output = 0.5
PowScalar output = 0.25
MulScalar output = -0.5
y.d = -0.5

Kommentar

4. Zusammenfassung

Ich habe vorgestellt, wie man eine neue Ebene einfügt. Sie können es auch verwenden, um eine Quantisierungsebene in die Ausgabe jeder Aktivierung eines vorhandenen trainierten Modells einzufügen oder um Faltung + Chargennormalisierung in eine einzelne Faltung zu falten. Nächstes Mal werde ich auf diesen Bereich eingehen.

Recommended Posts

[NNabla] So fügen Sie eine neue Ebene zwischen den mittleren Ebenen eines vorgefertigten Netzwerks hinzu
[NNabla] So erhalten Sie die Ausgabe (Variable) der mittleren Schicht des erstellten Netzwerks
[NNabla] So entfernen Sie die mittlere Ebene eines vorgefertigten Netzwerks
So berechnen Sie die Volatilität einer Marke
Visualisieren Sie die innere Schicht des neuronalen Netzwerks
Grundlagen von PyTorch (2) - Wie erstelle ich ein neuronales Netzwerk?
[Morphologische Analyse] So fügen Sie Mecab ein neues Wörterbuch hinzu
[Ubuntu] So löschen Sie den gesamten Inhalt des Verzeichnisses
So ermitteln Sie den Skalierungskoeffizienten eines bipolaren Wavelets
So verbinden Sie den Inhalt der Liste mit einer Zeichenfolge
So zeichnen Sie einfach die Struktur eines neuronalen Netzwerks in Google Colaboratory mit "convnet-drawer"
So machen Sie einen Screenshot des Chrome-Bildschirms (verhindern Sie, dass er in der Mitte abgeschnitten wird)
So bestimmen Sie die Existenz eines Selenelements in Python
So überprüfen Sie die Speichergröße einer Variablen in Python
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
So geben Sie das Ausgabeergebnis des Linux-Befehls man in eine Datei aus
So ermitteln Sie die Scheitelpunktkoordinaten eines Features in ArcPy
Ein Befehl zum einfachen Überprüfen der Netzwerkgeschwindigkeit auf der Konsole
Ich habe versucht, die Genauigkeit meines eigenen neuronalen Netzwerks zu verbessern
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
So setzen Sie eine Zeilennummer am Anfang einer CSV-Datei
So erstellen Sie einen Wrapper, der die Signatur der zu umschließenden Funktion beibehält
So spielen Sie ein Video ab, während Sie die Anzahl der Bilder ansehen (Mac)
So fügen Sie ein Paket mit PyCharm hinzu
So überprüfen Sie die Version von Django
Ermitteln Sie den Wert der mittleren Schicht von NN
Fügen Sie mithilfe des Keras-Backends eine Ebene hinzu
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
Wie man eine Benutzergruppe mit Slack-Benachrichtigung erwähnt, wie man die ID einer Benutzergruppe überprüft
So geben Sie mit Jupyter Notebook einen Wert in der Mitte einer Zelle aus
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
[Python] So sortieren Sie nach dem N-ten M-ten Element eines mehrdimensionalen Arrays
Ein Memorandum zur Ausführung des Befehls! Sudo magic in Jupyter Notebook
Ich möchte dem Anfang einer WAV-Datei 1 Sekunde lang Stille hinzufügen
So erstellen Sie einen Raspberry Pi, der die Tweets eines bestimmten Benutzers spricht
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Eine neue Form der App, die mit GitHub funktioniert: So erstellen Sie GitHub-Apps
So finden Sie den Bereich des Boronoi-Diagramms
So fügen Sie einen Suchpfad für Python-Module hinzu
So implementieren Sie einen neuen CPUFreq-Prozessortreiber
[Java] So wechseln Sie zwischen mehreren Java-Versionen
[Bachstelze] Fügen Sie dem Bachstelzenprojekt eine Anmeldeseite hinzu
So zeigen Sie das Änderungsdatum einer Datei in C-Sprache bis zu Nanosekunden an
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
[Ruby] Wie ersetze ich nur einen Teil der Zeichenkette, der mit dem regulären Ausdruck übereinstimmt?
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
Die weltweit am einfachsten zu verstehende Erklärung zur Herstellung von LINE BOT (1) [Kontoerstellung]
Ein Memo darüber, wie man das schwierige Problem der Erfassung von FX mit AI überwinden kann
Eine Geschichte über den Versuch, Linter mitten in einem Python (Flask) -Projekt vorzustellen
So ändern Sie das generierte Bild von GAN in ein qualitativ hochwertiges Bild nach Ihren Wünschen
Fügen Sie eine Funktion hinzu, um dem Wetter heute mitzuteilen, dass der Bot locker ist (hergestellt von Python).
Lesen Sie die Python-Markdown-Quelle: So erstellen Sie einen Parser
Wie man die Portnummer des xinetd-Dienstes kennt
So schreiben Sie eine GUI mit dem Befehl maya
So ermitteln Sie die Anzahl der Stellen in Python
Fügen Sie mit Matplotlib Informationen am unteren Rand der Abbildung hinzu
So erstellen Sie ein Untermenü mit dem Plug-In [Blender]