Freigeben über


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 ist 1. 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 an 0.2 * initValueScale * fanout^(-1/2)angepasst.

  • layerTypes: der Typ des nichtlinearen Vorgangs in ausgeblendeten Ebenen. Gültige Werte sind Sigmoid (Standard), Tanh und RectifiedLinear.

  • uniformInit: bestimmt, ob eine einheitliche Verteilung zum Initialisieren von Modellparametern verwendet werden soll. Gültige Werte sind true (Standard) und false (mithilfe der Gaussian-Verteilung zum Initialisieren von Modellparametern).

  • applyMeanVarNorm: ob die Normalisierung der Mittel-/Varianz auf der Eingabe angewendet werden soll. Gültige Werte sind true und false (Standard).

  • addDropoutNodes: ob Drop-Out-Knoten hinzugefügt werden sollen. Der Standardwert ist false. Wenn angegeben true, wird ein Dropdownknoten auf den Eingabeknoten und die Ausgabe jeder ausgeblendeten Ebene angewendet.

  • layerSizes: gibt die Dimensionen der Ebenen an. Beschreibt beispielsweise layerSizes=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 ist CrossEntropyWithSoftmax. Alternativen sind SquareError, CrossEntropyund ClassBasedCrossEntropyWithSoftmax. Dies ClassBasedCrossEntropyWithSoftmax 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 dem trainingCriterion.

  • 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 Syntax n1: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.