Einfacher Netzwerk-Generator
Dies SimpleNetworkBuilder
ermöglicht die Verwendung einfacher Standardnetzwerktypen mit wenigen Konfigurationslinien. Nur eine begrenzte Reihe von Konfigurationsoptionen wird unterstützt. Komplexere Netzwerke können stattdessen mithilfe der BrainScriptNetworkBuilder
stattdessen definiert werden.
Um zu verwenden SimpleNetworkBuilder
, schließen Sie einen Konfigurationsblock desselben Namens in Ihrer Schulungskonfiguration ein. Wenn eine Option nicht angegeben wird, wird der Standardwert angenommen. Zunächst stellen wir ein präzises Beispiel bereit und listen alle Steuerelementparameter und -optionen unten auf.
SimpleNetworkBuilder = [
# 2 inputs, 2 hidden layers with 50 element nodes each, 2 outputs
layerSizes = 2:50*2:2
trainingCriterion = "CrossEntropyWithSoftmax"
evalCriterion = "ErrorPrediction"
layerTypes = "Sigmoid"
applyMeanVarNorm = true
]
Im obigen Beispiel "trainingCriterion" und "layerTypes" könnte ausgelassen werden, da sie die Standardwerte verwenden. Die folgenden Parameter sind verfügbar:
initValueScale
: der Wert zum Skalieren des Bereichs der Zufallszahlen, die für die Initialisierung verwendet werden. Der Standardwert ist1
. Wenn die Modellparameter mithilfe der einheitlichen Verteilung initialisiert werden, wird der Zufallszahlbereich an[-0.05 * initValueScale, 0.05 * initValueScale]
angepasst. Wenn die Modellparameter mithilfe der Gaussianverteilung initialisiert werden, wird die Standardabweichung an0.2 * initValueScale * fanout^(-1/2)
angepasst.layerTypes
: der Typ des nichtlinearen Vorgangs in ausgeblendeten Ebenen. Gültige Werte sindSigmoid
(Standard),Tanh
undRectifiedLinear
.uniformInit
: bestimmt, ob eine einheitliche Verteilung zum Initialisieren von Modellparametern verwendet werden soll. Gültige Werte sindtrue
(Standard) undfalse
(mithilfe der Gaussian-Verteilung zum Initialisieren von Modellparametern).applyMeanVarNorm
: ob die Normalisierung der Mittel-/Varianz auf der Eingabe angewendet werden soll. Gültige Werte sindtrue
undfalse
(Standard).addDropoutNodes
: ob Drop-Out-Knoten hinzugefügt werden sollen. Der Standardwert istfalse
. Wenn angegebentrue
, wird ein Dropdownknoten auf den Eingabeknoten und die Ausgabe jeder ausgeblendeten Ebene angewendet.layerSizes
: gibt die Dimensionen der Ebenen an. Beschreibt beispielsweiselayerSizes=128:10:200:4000
ein neurales Netzwerk mit zwei ausgeblendeten Ebenen. Die erste ausgeblendete Ebene verfügt über eine Dimension von 10, und die zweite ausgeblendete Ebene verfügt über eine Dimension von 200. Die Eingabe- und Ausgabeebenen verfügen jeweils über eine Dimension von 128 und 4000.trainingCriterion
: das Kriterium, das für die Schulung verwendet wird. Der Standardwert istCrossEntropyWithSoftmax
. Alternativen sindSquareError
,CrossEntropy
undClassBasedCrossEntropyWithSoftmax
. DiesClassBasedCrossEntropyWithSoftmax
ist für klassenbasierte Schulungen geeignet, die nützlich sein würden, wenn die Ausgabedimension groß ist und daher in Klassen unterteilt werden muss, um die Schulung und Auswertung zu beschleunigen.evalCriterion
: das Kriterium für die Bewertung. Die Auswahl von Werten entspricht demtrainingCriterion
.lookupTableOrder
: gibt die Reihenfolge des Kontexts an, der im LookupNode erweitert wird. Standardwert:1
. Wenn Sie es auf einen Wert festlegen, z. B. 3, wird die Eingabedimension auf eine kontextabhängige Weise durch eine Reihenfolge von 3 erweitert. Wenn die Eingabebeobachtung beispielsweise eine Dimension von 20 aufweist, würde das Festlegen dieses Werts auf 3 die Eingabeknotendimension auf 60 festlegen.
Für wiederkehrende neurale Netzwerke (RNNs) gibt es zusätzliche Parameter.
recurrentLayer
: gibt die Ebenen an, die selbst wiederkehrende Verbindungen enthalten. Standardmäßig gibt es keine wiederkehrende Ebene. Verwenden Sie die Syntaxn1:n2:n3
, um anzugeben, dass Ebenen n1, n2 und n3 wiederkehrende Verbindungen aufweisen.defaultHiddenActivity
: Der standardmäßige Wert für ausgeblendete Ebenenaktivität, der vom Verzögerungsknoten beim Zugriff auf Werte vor der ersten Beobachtung verwendet wird. Standardwert:0.1
.rnnType
: der Typ vordefinierter Netzwerke. Gültige Werte sind:SIMPLENET
: das neurale Netzwerk mit Feed-Forward. Dies ist der Standardnetzwerktyp.SIMPLERNN
: die einfache RNN, die möglicherweise ein tiefes RNN sein kann, in dem mehrere Ebenen wiederkehrende Schleifen haben.CLASSLM
: die klassenbasierte einfache RNN. Es verwendet sparse Eingaben, sparse Parameter und sparse Ausgabe. Dies wird häufig für Sprachmodellierungsaufgaben verwendet.LBLM
: das log-bilinear neurale Netzwerk.LSTM
: das langfristige neurale Speichernetzwerk.CLASSLSTM
: das kurzzeitbasierte neurale Speichernetzwerk der Klasse. Es verwendet sparse Eingaben, sparse Parameter und sparse Ausgabe. Dies wird häufig für Sprachmodellierungsaufgaben verwendet.
Weiter: Definieren Sie Ihre eigenen komplexen Netzwerke mit BrainScriptNetworkBuilder
.