Comandos de nivel superior con BrainScript

El comando train principal de nivel superior y eval/test se describen en la página Entrenar, probar, Eval . A continuación se detallan más comandos de nivel superior.

Comando Adapt

Este comando adapta un modelo ya entrenado mediante la regularización de divergencia de KL. Se recomienda que todas las demás adaptaciones se realicen mediante la edición de modelos. El comando adapt es muy similar al comando train, salvo que contiene dos parámetros más:

  • originalModelFileName: el nombre de archivo del modelo que se adaptará.

  • refNodeName: el nombre del nodo de la red computacional que se usará para la regularización de divergencia de KL.

Currículum Vitae

Este comando evalúa una serie de modelos de diferentes épocas en un conjunto de desarrollo (o validación cruzada) y muestra la información del mejor modelo. Además de los parámetros usados para el comando test, este comando también usa los parámetros.

  • crossValidationInterval: matriz de 3 enteros que identifican la época inicial, el incremento de época y la época final que se van a evaluar. Por ejemplo, 3:2:9 significa que se evaluarán los modelos 3,5,7 y 9.

  • sleepTimeBetweenRuns: cuántos segundos hay que esperar entre ejecuciones. Esto solo es necesario si la GPU es demasiado activa.

Comando Write

Este comando escribe el valor de un nodo de salida en un archivo. Los parámetros relacionados son

  • reader: bloque de configuración del lector para leer los datos de entrada.

  • writer: el bloque de configuración del escritor para determinar cómo escribir los datos de salida. Si no se especifica este valor, se usará el parámetro outputPath.

  • minibatchSize: el tamaño del minibatch que se va a usar al leer y procesar el conjunto de datos.

  • epochSize: el tamaño del conjunto de datos. El valor predeterminado es 0. Todo el conjunto de datos se evaluará si está establecido en 0.

  • modelPath: ruta de acceso al modelo que se va a usar para calcular la salida.

  • outputPath: ruta de acceso al archivo para escribir la salida en un formato de texto. Si el bloque de escritura existe, este parámetro se omitirá. OutputPath o writer deben existir.

  • outputNodeNames: matriz de uno o más nombres de nodo de salida que se van a escribir en un archivo.

Editar comando

Este comando edita un modelo y guarda el modelo modificado en el archivo. Esto está obsoleto. Los parámetros asociados son:

  • editPath: ruta de acceso al script MEL que se va a ejecutar.
  • ndlMacros: la ruta de acceso al archivo de macros NDL que se cargará y se usará en el script MEL.

Comando SVD

Este comando realiza una aproximación de rango bajo con la descomposición SVD de los parámetros que se pueden aprender. La motivación principal es factorizar una matriz de peso con dos matrices de clasificación inferior para mejorar la velocidad de inferencia, a la vez que se conserva la precisión. Por ejemplo:

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

Los bloques de parámetros asociados son:

  • modelPath: especifica dónde cargar el modelo inicial.

  • outputModelPath: especifica dónde guardar el modelo revisado.

  • SVDConfig: un archivo de configuración que especifica cómo se realiza el SVD para distintos grupos de nodos. Esta configuración tiene un formato de dos columnas:

    <NodeNameRegex> <float>

La primera columna es una expresión regular que coincidirá con el nombre del nodo en un grupo. La segunda columna es un float que indica qué porcentaje de SVDenergy se mantendrá después de SVD, donde la energía SVD se define como la suma de valores singulares. Por ejemplo, la configuración

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

provocará una descomposición SVD (0.4) más agresiva para las conexiones no recurrentes (de x a i,f,c,o gates) en LSTM y una descomposición SVD menos agresiva para las conexiones recurrentes (de h a i,f,c,o gates), donde los nombres de parámetro se definen en el NDL.

Comando Dumpnode

Este comando volca la información de los nodos en un archivo de salida, que también se puede lograr en MEL con un mayor control. Los parámetros relacionados son:

  • modelPath: la ruta de acceso al archivo de modelo que contiene los nodos que se van a volcar.

  • nodeName: el nombre del nodo que se va a escribir en un archivo. Si no se especifican todos los nodos se volcarán.

  • nodeNameRegex: expresión regular para los nombres de los nodos que se van a escribir en un archivo. Si se especifica, se omite el nodeName parámetro .

  • outputFile: la ruta de acceso al archivo de salida. Si no se especifica un nombre de archivo, se generará automáticamente en función de modelPath.

  • printValues: determina si se imprimen los valores asociados a un nodo si los valores del nodo se conservan en el modelo. El valor predeterminado es verdadero.

  • printMetadata: determina si se imprimen los metadatos (nombre de nodo, dimensiones, etc.) asociados a un nodo. El valor predeterminado es verdadero.

Comando WriteWordAndClass (en desuso)

Este comando lee los datos de entrenamiento de texto, cuenta el número de repeticiones de cada palabra del conjunto de entrenamiento, ordena las palabras en el orden descendente de los recuentos, proporciona a cada palabra un identificador único, asigna cada palabra a una clase y genera un archivo de vocabulario de cuatro columnas y un archivo de asignación de palabrasto-id que el LMSequenceReader (en desuso) usará para entrenar modelos de lenguaje basados en clases. Los parámetros relacionados son:

  • inputFile: la ruta de acceso al archivo de entrenamiento de texto.

  • outputVocabFile: el nombre del archivo de vocabulario de cuatro columnas generado. La primera columna es el identificador de palabra, la segunda columna es el recuento de la palabra, la tercera columna es la palabra y la cuarta columna es el identificador de clase.

  • outputWord2Cls: la ruta de acceso al archivo de asignación de palabra a clase generado.

  • outputCls2Index: la ruta de acceso al archivo de asignación de clase a wordId generado.

  • vocabSize: el tamaño de vocabulario deseado.

  • nbrClass: el número deseado de clases.

  • cutoff: recuento de límites. Cuando el recuento de palabras es inferior o igual a este valor, la palabra se tratará como <sink>. El valor predeterminado es 2. Tenga en cuenta que este parámetro solo se usa si el tamaño de vocabulario deseado es mayor que el número real de palabras existentes en el conjunto de entrenamiento.

CreateLabelMap (comando)

A menudo es fácil crear manualmente el archivo de asignación de etiquetas. A veces, sin embargo, prefiere que el archivo de asignación de etiquetas se genere automáticamente, que es el propósito del comando CreateLabelMap. Actualmente, UCIFastReader es el único lector que admite esta acción. Los parámetros relacionados son

  • section: el nombre del bloque de parámetros (normalmente un bloque de entrenamiento) que tiene el subproceso lector que se usará para generar el archivo de asignación de etiquetas. El archivo de asignación de etiquetas generado se guardará en el labelMappingFile especificado en el subproceso lector de este bloque de parámetros.

  • minibatchSize: tamaño de minibatch que se va a usar al crear el archivo de asignación de etiquetas.

Comando DoEncoderDecoder

Las redes neuronales se pueden usar para formar una cadena de redes. Las primeras redes pueden funcionar como codificadores y las siguientes redes pueden servir como descodificadores. Un nodo especial, PairNetworkNode, se usa en cada red para servir un socket que otras redes conecten. Los parámetros relacionados son

  • section: encoderReader y decoderReader son los lectores para el codificador y el descodificador. Del mismo modo, para encoderCVReader y decoderCVReader para el conjunto de validación.

  • encoderNetworkBuilder y decoderNetworkBuilder: especifican el generador de red simple que se va a usar.

Comando BNStat

Evaluar la media y la varianza de evaluar y probar el conjunto de datos para el nodo de normalización por lotes es complicado. Aunque la media y la varianza se pueden calcular a través del promedio de ejecución o exp durante el entrenamiento, seguimos tienden a proporcionar un método más estable y sólido para generar la media y la varianza de la normalización por lotes: estadísticas posteriores a la normalización por lotes. El comando debe llamarse después del entrenamiento. Generará la media y la varianza para cada capa BN.

  • modelPath: la ruta de acceso al archivo de modelo que contiene el modelo entrenado.
  • minibatchSize: tamaño de minilote mientras se evalúa, igual que con minibatchSize de entrenamiento
  • itersPerNode: las iteraciones de estadísticas para cada nodo de normalización por lotes
  • reader: bloque de configuración del lector para leer los datos de prueba. Para obtener más información, consulte Bloque lector.
  • enableDistributedMBReading: lectura distribuida en entrenamiento paralelo