Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erstellt ein Array von Funktionen in eine neue Funktion, die diese Funktionen nacheinander aufruft ("Vorwärtsfunktionskomposition").
Sequential (arrayOfFunctions)
Parameter
arrayOfFunctions: ein BrainScript-Array von Funktionen, z. B. erstellt mit dem : Operator: (LinearLayer{1024} : Sigmoid)
Rückgabewert
Diese Funktion gibt eine andere Funktion zurück. Diese zurückgegebene Funktion nimmt ein Argument und gibt das Ergebnis des Anwendens aller angegebenen Funktionen in Sequenz auf die Eingabe zurück.
BESCHREIBUNG
Sequential() ist ein leistungsstarker Vorgang, der es ermöglicht, eine sehr häufige Situation in neuralen Netzwerken auszudrücken, in denen eine Eingabe verarbeitet wird, indem sie durch eine Weiterentwicklung von Schichten verteilt wird.
Möglicherweise sind Sie mit ihnen aus anderen Neural-Netzwerk-Toolkits vertraut.
Sequential() verwendet ein Array von Funktionen als Argument und gibt eine neue Funktion zurück, die diese Funktion aufruft, und gibt jedes Mal die Ausgabe einer an die nächste zurück.
Betrachten Sie das folgende Beispiel:
FGH = Sequential (F:G:H)
y = FGH (x)
Hier ist der Doppelpunkt (:) die Syntax des Ausdrucks von Arrays von BrainScript. Beispielsweise (F:G:H) ist ein Array mit drei Elementen, F, Gund .H
In Python würde dies z. B. als [ F, G, H ]geschrieben werden.
Die FGH oben definierte Funktion bedeutet das gleiche wie
y = H(G(F(x)))
Dies wird als "Funktionskomposition" bezeichnet und ist besonders praktisch für die Ausdruck von neuralen Netzwerken, die häufig über diese Form verfügen:
+-------+ +-------+ +-------+
x -->| F |-->| G |-->| H |--> y
+-------+ +-------+ +-------+
das ist perfekt ausgedrückt durch Sequential (F:G:H).
Bitte beachten Sie schließlich, dass der folgende Ausdruck:
layer1 = DenseLayer{1024}
layer2 = DenseLayer{1024}
z = Sequential (layer1 : layer2) (x)
bedeutet etwas anderes als:
layer = DenseLayer{1024}
z = Sequential (layer : layer) (x)
In diesem Formular wird die gleiche Funktion mit dem gleichen freigegebenen Satz von Parametern zweimal angewendet, während in der früheren Form die beiden Ebenen separate Parametersätze aufweisen.
Beispiel
Standardmäßiges 4-ausgeblendetes Layer-Feed-Forward-Netzwerk wie in der früheren deep-neuralen Netzwerkarbeit an der Spracherkennung verwendet:
myModel = Sequential (
DenseLayer{2048, activation=Sigmoid} : # four hidden layers
DenseLayer{2048, activation=Sigmoid} :
DenseLayer{2048, activation=Sigmoid} :
DenseLayer{2048, activation=Sigmoid} :
DenseLayer{9000, activation=Softmax} # note: last layer is a Softmax
)
features = Input{40}
p = myModel (features)