Freigeben über


Befehle auf oberster Ebene mit BrainScript

Der Hauptbefehl train auf oberster Ebene undtesteval/wird auf der Seite "Train", "Test", "Eval" beschrieben. Weitere Befehle auf oberster Ebene finden Sie unten.

Befehl anpassen

Dieser Befehl passt ein bereits trainiertes Modell mithilfe der KL-Divergenz-Regularisierung an. Es wird empfohlen, dass alle anderen Anpassungen mithilfe der Modellbearbeitung durchgeführt werden sollten. Der Befehl "Anpassen" ähnelt dem Befehl "Train", außer dass er zwei weitere Parameter enthält:

  • originalModelFileName: der Dateiname des Modells, das angepasst wird.

  • refNodeName: der Name des Knotens im Berechnungsnetzwerk, der für kl-Divergenz-Regularisierung verwendet wird.

CV

Dieser Befehl wertet eine Reihe von Modellen aus unterschiedlichen Epochen für eine Entwicklung (oder Kreuzüberprüfung) aus und zeigt die Informationen des besten Modells an. Neben den Parametern, die für den Testbefehl verwendet werden, verwendet dieser Befehl auch die Parameter.

  • crossValidationInterval: das Array von 3 Ganzzahlen, die die Anfangszeit, das Epochen-Inkrement und die endgültige Epoche identifizieren, die ausgewertet werden soll. Beispielsweise bedeutet 3:2:9, dass die Modelle 3,5,7 und 9 ausgewertet werden.

  • sleepTimeBetweenRuns: wie viele Sekunden zwischen den Ausführungen warten sollen. Dies ist nur erforderlich, wenn Ihre GPU zu heiß ist.

Befehl "Schreiben"

Dieser Befehl schreibt den Wert eines Ausgabeknotens in eine Datei. Die zugehörigen Parameter sind

  • reader: der Lesekonfigurationsblock, um die Eingabedaten zu lesen.

  • writer: Der Writer-Konfigurationsblock, um zu bestimmen, wie die Ausgabedaten geschrieben werden. Wenn dieser Wert nicht angegeben wird, wird der OutputPath-Parameter verwendet.

  • minibatchSize: die Minibatchgröße, die beim Lesen und Verarbeiten des Datasets verwendet werden soll.

  • epochSize: die Größe des Datasets. Standard ist "0". Das gesamte Dataset wird ausgewertet, wenn es auf 0 festgelegt ist.

  • modelPath: Der Pfad zum Modell, mit dem die Ausgabe berechnet werden soll.

  • outputPath: Der Pfad zur Datei, um die Ausgabe in einem Textformat zu schreiben. Wenn der Writer-Block vorhanden ist, wird dieser Parameter ignoriert. Entweder outputPath oder Writer muss vorhanden sein.

  • outputNodeNames: ein Array von mindestens einem Ausgabeknotennamen, der in eine Datei geschrieben werden soll.

Befehl bearbeiten

Dieser Befehl bearbeitet ein Modell und speichert das geänderte Modell in der Datei. Dies ist veraltet. Die zugeordneten Parameter sind:

  • editPath: Der Pfad zum MEL-Skript, das ausgeführt werden soll.
  • ndlMacros: Der Pfad zur NDL-Makrodatei, die geladen und im MEL-Skript verwendet wird.

SVD-Befehl

Dieser Befehl führt eine geringe Näherung mit der SVD-Dekomposition von lernbaren Parametern durch. Die primäre Motivation besteht darin, eine Gewichtsmatrix mit zwei unterrangigen Matrizen zu faktorisieren, um die Schlussfolgerungsgeschwindigkeit zu verbessern, während die Genauigkeit beibehalten wird. Beispiel:

svd = [
    action = "SVD"
    modelPath = "train\lstm.model.67"
    outputModelPath = "train\lstm.model.svd"
    SVDConfig = "nodeConfigs"
]

Die zugeordneten Parameterblöcke sind:

  • modelPath: gibt an, wo das anfängliche Modell geladen werden soll.

  • outputModelPath: gibt an, wo das überarbeitete Modell gespeichert werden soll.

  • SVDConfig: eine Konfigurationsdatei, die angibt, wie die SVD für verschiedene Knotengruppen ausgeführt wird. Diese Konfiguration befindet sich in einem zweispaltigen Format:

    <NodeNameRegex> <float>

Die erste Spalte ist ein regulärer Ausdruck, der dem Knotennamen in einer Gruppe entspricht. Die zweite Spalte ist ein Float, der angibt, welcher Prozentsatz der SVDenergie nach SVD aufbewahrt wird, wobei SVD-Energie als Summe der Singularwerte definiert wird. Beispiel: Die Konfiguration

`LSTMoutput[1-3].Wx[ifco] 0.4`
`LSTMoutput[1-3].Wh[ifco] 0.6`

führt zu einer aggressiveren SVD-Dekomposition (0,4) für die nicht wiederkehrenden Verbindungen (von x zu i,f,c,o Gates) in LSTM und weniger aggressiver SVD-Dekomposition für wiederkehrende Verbindungen (von h bis i,f,c,o gates), wobei die Parameternamen in der NDL definiert sind.

Dumpnode-Befehl

Mit diesem Befehl werden die Informationen von Knoten(n) in eine Ausgabedatei abgebildet, die auch in MEL mit größerem Steuerelement erreicht werden kann. Die zugehörigen Parameter sind:

  • modelPath: Der Pfad zur Modelldatei, die die Zubildknoten enthält.

  • nodeName: der Name des Knotens, der in eine Datei geschrieben werden soll. Wenn nicht alle Knoten angegeben werden, wird abgebildet.

  • nodeNameRegex: Der reguläre Ausdruck für die Namen der Knoten, die in eine Datei geschrieben werden sollen. Wenn angegeben, wird der nodeName Parameter ignoriert.

  • outputFile: der Pfad zur Ausgabedatei. Wenn kein Dateiname angegeben wird, wird automatisch basierend auf dem ModelPath generiert.

  • printValues: bestimmt, ob die Werte gedruckt werden sollen, die einem Knoten zugeordnet sind, wenn die Werte des Knotens im Modell beibehalten werden. Der Standardwert ist "true".

  • printMetadata: bestimmt, ob die Metadaten (Knotenname, Dimensionen usw.) gedruckt werden sollen, die einem Knoten zugeordnet sind. Der Standardwert ist "true".

WriteWordAndClass Command (veraltet)

Dieser Befehl liest die Textschulungsdaten, zählt die Anzahl der Vorkommen jedes Worts im Schulungssatz, sortiert die Wörter in der absteigenden Reihenfolge der Anzahl, gibt jedem Wort eine eindeutige ID, weist jedes Wort einer Klasse zu und generiert eine vierspaltige Vokabulardatei und eine Word-zu-ID-Zuordnungsdatei, die vom (veralteten) LMSequenceReader verwendet werden soll, um klassenbasierte Sprachmodelle zu trainieren. Die zugehörigen Parameter sind:

  • inputFile: der Pfad zur Textdatei.

  • outputVocabFile: der Name der generierten vierspaltigen Vokabulardatei. Die erste Spalte ist die Wort-ID, die zweite Spalte ist die Anzahl des Worts, die dritte Spalte ist das Wort, und die vierte Spalte ist die Klassen-ID.

  • outputWord2Cls: Der Pfad zur generierten Word-zu-Klassen-Zuordnungsdatei.

  • outputCls2Index: der Pfad zur generierten Zuordnungsdatei der Klasse zu wordId.

  • vocabSize: die gewünschte Vokabulargröße.

  • nbrClass: die gewünschte Anzahl von Klassen.

  • cutoff: die Abtrennungsanzahl. Wenn sich die Anzahl eines Worts unter oder gleich diesem Wert befindet, wird das Wort als behandelt. Standard ist 2. Beachten Sie, dass dieser Parameter nur verwendet wird, wenn die gewünschte Vokabulargröße größer als die tatsächliche Anzahl von Wörtern ist, die im Schulungssatz vorhanden sind.

Befehl "CreateLabelMap"

Häufig ist es einfach, die Bezeichnungszuordnungsdatei manuell zu erstellen. Manchmal möchten Sie jedoch lieber die Bezeichnungszuordnungsdatei automatisch generiert haben, was der Zweck des Befehls "CreateLabelMap" ist. Derzeit ist UCIFastReader der einzige Leser, der diese Aktion unterstützt. Die zugehörigen Parameter sind

  • section: Der Parameterblockname (normalerweise ein Train-Block), der den Reader-Unterblock enthält, der zum Generieren der Bezeichnungszuordnungsdatei verwendet wird. Die generierte Bezeichnungszuordnungsdatei wird in der im Reader-Unterblock dieses Parameterblocks angegebenen LabelMappingFile gespeichert.

  • minibatchSize: die Minibatchgröße, die beim Erstellen der Bezeichnungszuordnungsdatei verwendet werden soll.

DoEncoderDecoder-Befehl

Neuronale Netzwerke können verwendet werden, um eine Kette von Netzwerken zu bilden. Die ersten mehrere Netzwerke können als Encoder funktionieren und die folgenden Netzwerke können als Decoder dienen. Ein spezieller Knoten, PairNetworkNode, wird in jedem Netzwerk verwendet, um einen Socket zu bedienen, der von anderen Netzwerken verbunden werden soll. Die zugehörigen Parameter sind

  • section: der encoderReader und decoderReader sind die Leser für Encoder und Decoder. Ähnlich für EncoderCVReader und DecoderCVReader für Validierungssatz.

  • encoderNetworkBuilder und decoderNetworkBuilder: Diese geben den einfachen Netzwerk-Generator an, der verwendet werden soll.

BNStat-Befehl

Die Auswertung des Mittelwerts und der Varianz von Auswertungs- und Testdatensatz für den Batchnormalisierungsknoten ist schwierig. Obwohl der Mittelwert und die Varianz über den laufenden Mittelwert oder exp während der Schulung berechnet werden könnten, neigen wir immer noch dazu, eine stabilere und robustere Methode bereitzustellen, um die Mittel- und Varianz der Batchnormalisierung zu generieren - Post Batch normalisierungsstatistik. Der Befehl muss nach der Schulung aufgerufen werden. Sie generiert die Mittel- und Varianz für jede BN-Ebene.

  • modelPath: Der Pfad zur Modelldatei, die ein trainiertes Modell enthält
  • minibatchSize: die MinibatchSize-Größe, während sie ausgewertet wird, gleich mit dem Schulungs-MinibatchSize
  • itersPerNode: die Statistiken-Iterationen für jeden Batch normalisierungsknoten
  • reader: Der Lesekonfigurationsblock zum Lesen der Testdaten. Details finden Sie im Reader-Block
  • enableDistributedMBReading: verteiltes Lesen in parallelen Schulungen