Dies ist der zweite Beitrag zu Qiita. (Artikel 2)
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.
-OS: macOS Catalina (Version 10.15.1) ・ Python: 3.5.4 ・ Nnabla: 1.3.0
Das Beispielnetzwerk ist unten definiert. (Wie Letztes Mal bisher)
article2_rewire_on.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.0)
Es ist einfach in Form von $ y = (x + 0,5) \ times2 $. Zu diesem Zeitpunkt ist die Variable y eine Variable, die das Ergebnis der obigen Formel hat, und das Ergebnis von "F.add_scalar (x, 0,5)", das eine Zwischenberechnung ist, wird (1) genannt.
Ich werde erklären, wie man (1) oben löscht und einfach $ y = x \ times2 $ setzt.
Es verwendet die Mitgliedsvariable rewire_on
von nnabla.Variable
in der nnabla-Referenz. Dies ist auch (relativ) leicht in Bezug zu verstehen. Ich habe es unten geübt.
article2_rewire_on.py
h1 = y.parent.inputs[0] # = (1)
x.rewire_on(h1)
Die Funktionsprüfung wurde unten durchgeführt.
article2_rewire_on.py
# [check func for visit]
def get_func_name(f):
print(f.name)
print('--- before ---')
y.visit(get_func_name)
print('')
# [rewire_on]
h1 = y.parent.inputs[0] # = (1)
x.rewire_on(h1)
print('--- after ---')
y.visit(get_func_name)
print('')
Ausgabe
--- before ---
AddScalar
MulScalar
--- after ---
MulScalar
h1
verschwindet mit x.rewire_on (h1)
. Um genau zu sein, scheint es, dass "h1" im Berechnungsgraphen durch "x" ersetzt wird. Die Beschreibung kann aus dem Code verstanden werden, aber wenn der Berechnungsgraph in einen Teilgraphen unterteilt ist, der mit dem Eingang mit dem Knoten "rewire_on" als Start- und Endpunkt verbunden ist, und einen Teilgraphen, der an den Ausgang übertragen wird, "[Startpunkt auf der Ausgangsseite] .rewire_on ([Eingabe Endpunkt an der Seite]) `. (Da es schwer in Worten zu verstehen ist, möchte ich bald eine Zahl veröffentlichen.)Mit rewire_on
können Sie nicht nur die mittlere Ebene entfernen, sondern auch eine neue Ebene einfügen. Ich habe es selbst geschafft, aber ich dachte "Ich wollte, dass jemand so etwas wie Qiita schreibt", also werde ich versuchen, es das nächste Mal zu schreiben.
Recommended Posts