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 weiter 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", mit der Ausnahme, dass er zwei weitere Parameter enthält:

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

  • refNodeName: der Name des Knotens im Rechennetzwerk, der für die KL-Divergenz-Regularisierung verwendet wird.

Lebenslauf

Dieser Befehl wertet eine Reihe von Modellen aus verschiedenen Epochen für einen Entwicklungssatz (oder eine 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 drei ganzzahligen Zahlen, die die anfangse Epoche, epocheneinkrementierung und 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ührungsläufen warten sollen. Dies ist nur erforderlich, wenn Ihre GPU zu heiß ist.

Befehl 'Schreiben'

Mit diesem Befehl wird der Wert eines Ausgabeknotens in eine Datei geschrieben. Die zugehörigen Parameter sind

  • reader: der Lesekonfigurationsblock zum Lesen der Eingabedaten.

  • writer: der Writer-Konfigurationsblock, um zu bestimmen, wie die Ausgabedaten geschrieben werden. Wenn dieser Wert nicht angegeben ist, 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, das zum Berechnen der Ausgabe verwendet 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 mit einem oder mehreren Ausgabeknotennamen, die in eine Datei geschrieben werden sollen.

Befehl 'Bearbeiten'

Mit diesem Befehl wird ein Modell bearbeitet und das geänderte Modell in der Datei gespeichert. Dies ist veraltet. Die zugehörigen Parameter sind:

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

SVD-Befehl

Dieser Befehl führt eine näherungsarme Rangfolge mit SVD-Analyse von lernbaren Parametern durch. Die primäre Motivation besteht darin, eine Gewichtsmatrix mit zwei niedrigeren Rangmatrizen zu factorisieren, um die Ableitungsgeschwindigkeit zu verbessern und gleichzeitig die Genauigkeit zu wahren. Beispiel:

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

Die zugehörigen Parameterblöcke sind:

  • modelPath: Gibt an, wo das ursprü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 weist ein zweispaltiges Format auf:

    <NodeNameRegex> <float>

Die erste Spalte ist ein regulärer Ausdruck, der dem Knotennamen in einer Gruppe entspricht. Die zweite Spalte ist ein Gleitkomma, der angibt, welcher Prozentsatz der SVDenergie nach SVD beibehalten 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 gespeichert, die auch in MEL mit größerer Kontrolle durchgeführt werden kann. Die zugehörigen Parameter sind:

  • modelPath: der Pfad zu der Modelldatei, die die zu speichernden Knoten enthält.

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

  • 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 einem Knoten zugeordneten Werte gedruckt werden sollen, 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 jedem Wort eine eindeutige ID zu, weist jedem Wort eine Klasse zu und generiert eine vierspaltige Vokabulardatei und eine Wort-to-id Zuordnungsdatei, die vom 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 Zuordnungsdatei für Word-zu-Klasse.

  • 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 Cutoff-Anzahl. Wenn die Anzahl eines Worts unter oder gleich diesem Wert ist, wird das Wort als <Teil> behandelt. Der Standardwert 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 im Schulungssatz ist.

CreateLabelMap-Befehl

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

  • section: der Parameterblockname (in der Regel ein Zugblock), der den Leseunterblock 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

Neurale Netzwerke können verwendet werden, um eine Kette von Netzwerken zu bilden. Die ersten 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: encoderReader und decoderReader sind die Leser für Encoder und Decoder. Ebenso für encoderCVReader und decoderCVReader für Validierungssatz.

  • encoderNetworkBuilder und decoderNetworkBuilder: Diese geben den zu verwendenden einfachen Netzwerk-Generator an.

BNStat-Befehl

Die Auswertung des Mittelwerts und der Varianz der Auswertung und Testdatensätze für den Batchnormalisierungsknoten ist schwierig. Obwohl der Mittelwert und die Varianz bei der Ausführung des Mittelwerts oder exp während der Schulung berechnet werden können, bieten wir immer noch eine stabilere und robustere Methode, um den Mittelwert und die Varianz der Batchnormalisierung zu generieren - Nach batchnormalisierungsstatistiken. Der Befehl muss nach dem Training aufgerufen werden. Er generiert den Mittelwert und die Varianz für jede BN-Ebene.

  • modelPath: Der Pfad zur Modelldatei, die trainiertes Modell enthält
  • minibatchSize: die Minibatchgröße beim Auswerten, identisch mit dem Schulungs-MinibatchSize
  • itersPerNode: die Statistischen Iterationen für jeden Batchnormalisierungsknoten
  • reader: der Lesekonfigurationsblock zum Lesen der Testdaten. Ausführliche Informationen finden Sie im Reader-Block
  • enableDistributedMBReading: Verteiltes Lesen in parallelen Schulungen