Introducción al archivo de configuración de BrainScript
Para ejecutar CNTK se usa una línea de comandos similar a cntk configFile=yourExp.cntk
donde yourExp.cntk es un archivo de configuración de CNTK, que normalmente contiene varios bloques de comandos. Un bloque de comandos es un bloque de nivel superior de la configuración. Cada bloque de comandos debe especificar qué acción se llevará a cabo con información relacionada. Para ilustrar los bloques de configuración y comandos, usamos un ejemplo sencillo a continuación (tomado del ejemplo de MNIST).
rootDir = ".." # often, this is overwritten on the command line
configDir = "$rootDir$/Config"
dataDir = "$rootDir$/Data"
outputDir = "$rootDir$/Output"
modelDir = "$outputDir$/Models"
command = mnistTrain
mnistTrain = [
action = "train"
# network definition
BrainScriptNetworkBuilder = (new ComputationNetwork
include "$ConfigDir$/01_OneHidden.bs"
)
# SGD learner configuration
SGD = [
modelPath = "$ModelDir$/01_OneHidden_Model.dnn"
epochSize = 60000
minibatchSize = 32
learningRatesPerMB = 0.1
maxEpochs = 30
]
# reader configuration
reader = [
readerType = "CNTKTextFormatReader"
file = "$DataDir$/Train-28x28_cntk_text.txt"
input = [
features = [
dim = 784
format = "dense"
]
labels = [
dim = 10
format = "dense"
]
]
]
]
En este ejemplo, puede observar que todos los valores de configuración se especifican como un par nombre-valor. Un valor puede ser numérico, una cadena, una lista o incluso un bloque de configuraciones. Puede especificar variables, como DataDir
en este ejemplo, y hacer referencia a ellas más adelante en el script mediante la notación $DataDir$
.
El parámetro command
de configuración de nivel superior determina qué bloques de comandos se van a ejecutar y en qué orden se ejecutan si se especifica más de un bloque de comandos. En este ejemplo, se ejecutará el mnistTrain
bloque de comandos. Este bloque de comandos especifica la acción que se va a ejecutar, que es train
en este caso. A menudo hay tres bloques de parámetros asociados a la acción de entrenamiento:
- un bloque de generador de red, que especifica cómo crear una red desde cero y cómo cargar un modelo desde un archivo de modelo existente,
- un bloque de aprendiz, que especifica qué algoritmo de entrenamiento se va a usar,
- un bloque de lector, que especifica dónde y cómo cargar características y etiquetas.
En este ejemplo específico, el generador de red indicado por el bloque BrainScriptNetworkBuilder se usa para definir la red, el algoritmo de aprendizaje de descenso de degradado estocástico, tal y como se indica en el bloque SGD, se usa para entrenar el modelo y el lector de formato de texto de CNTK se usa para cargar las características y etiquetas de los archivos en formato de texto CNTK. Tenga en cuenta que los lectores se implementan como archivos DLL independientes y el nombre del lector también es el nombre del archivo DLL que se cargará para leer los datos.
Los bloques de configuración usados con más frecuencia son:
- Generadores de red
- SimpleNetworkBuilder : crea una de las redes predefinidas con personalización limitada.
- BrainScriptNetworkBuilder: crea una red definida mediante el lenguaje de descripción de red (BrainScript) de CNTK. Proporciona una flexibilidad completa en el diseño de sus propias operaciones y estructura de red.
- Estudiantes
- SGD : usa el algoritmo de descenso de degradado estocástico para entrenar el modelo. Es el instructor deseado para la mayoría de las aplicaciones.
- Lectores de datos
- CNTK Lector de formato de texto: lee el formato de CNTK basado en texto, que admite varias entradas combinadas en el mismo archivo.
- Lector rápido de UCI (en desuso): lee el formato UCI basado en texto, que contiene etiquetas y características combinadas en un archivo.
- Lector HTKMLF : lee los archivos de formato HTK/MLF, que a menudo se usan en las aplicaciones de reconocimiento de voz.
- Lector de secuencias lm : lee archivos basados en texto que contienen secuencias de palabras para predecir secuencias de palabras. Esto se usa a menudo en el modelado de lenguajes.
- Lector de secuencia de LU : lee archivos basados en texto que contienen secuencias de palabras y sus etiquetas. Esto se usa a menudo para language understanding.
En las siguientes subsecciones, describiremos CNTK configuración y los bloques anteriores en detalle. También puede saltar a los bloques individuales mediante los vínculos del texto anterior.
Consulte también