Compartir a través de


Generador de redes simple

SimpleNetworkBuilder Permite usar tipos de red estándar simples con pocas líneas de configuración. Solo se admite un conjunto limitado de opciones de configuración. En su lugar, se pueden definir redes más complejas mediante BrainScriptNetworkBuilder .

Para usar SimpleNetworkBuilder, incluya un bloque de configuración con el mismo nombre en la configuración de entrenamiento. Cuando se omite una opción, se asume el valor predeterminado. En primer lugar, se proporciona un ejemplo conciso y se enumeran todos los parámetros de control y las opciones siguientes.

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
]

En el ejemplo anterior se podría omitir "trainingCriterion" y "layerTypes", ya que usan los valores predeterminados. Los siguientes parámetros están disponibles:

  • initValueScale: el valor para escalar el intervalo de los números aleatorios usados para la inicialización. El valor predeterminado es 1. Si los parámetros del modelo se inicializan mediante la distribución uniforme, el intervalo de números aleatorios se ajustará a [-0.05 * initValueScale, 0.05 * initValueScale]. Si los parámetros del modelo se inicializan mediante la distribución gaussiana, la desviación estándar se ajustará a 0.2 * initValueScale * fanout^(-1/2).

  • layerTypes: el tipo de operación no lineal en capas ocultas. Los valores válidos son Sigmoid (valor predeterminado), Tanh, y RectifiedLinear.

  • uniformInit: determina si se debe usar la distribución uniforme para inicializar parámetros del modelo. Los valores válidos son true (valor predeterminado) y false (mediante la distribución gaussiana para inicializar los parámetros del modelo).

  • applyMeanVarNorm: indica si se debe aplicar la normalización media/varianza en la entrada. Los valores válidos son true y false (predeterminado).

  • addDropoutNodes: indica si se van a agregar nodos desplegables. El valor predeterminado es false. Si se especifica en true, se aplicará un nodo desplegable al nodo de entrada y la salida de cada capa oculta.

  • layerSizes: especifica las dimensiones de las capas. Por ejemplo, layerSizes=128:10:200:4000 describe una red neuronal con dos capas ocultas. La primera capa oculta tiene una dimensión de 10 y la segunda capa oculta tiene una dimensión de 200. Las capas de entrada y salida tienen una dimensión de 128 y 4000, respectivamente.

  • trainingCriterion: criterio utilizado para el entrenamiento. El valor predeterminado es CrossEntropyWithSoftmax. Las alternativas son SquareError, CrossEntropyy ClassBasedCrossEntropyWithSoftmax. ClassBasedCrossEntropyWithSoftmax es para el entrenamiento basado en clases, lo que sería útil si la dimensión de salida es grande y, por lo tanto, debe dividirse en clases para acelerar el entrenamiento y la evaluación.

  • evalCriterion: criterio de evaluación. La selección de valores es la misma que .trainingCriterion

  • lookupTableOrder: especifica el orden de expansión del contexto en el lookupNode. El valor predeterminado es 1. Si se establece en un valor como 3, se expandiría la dimensión de entrada de forma dependiente del contexto por un orden de 3. Por ejemplo, si la observación de entrada tiene una dimensión de 20, establecer este valor en 3 establecería la dimensión del nodo de entrada en 60.

En el caso de las redes neuronales recurrentes (RNN), hay parámetros adicionales.

  • recurrentLayer: especifica las capas que contienen conexiones auto recurrentes. De forma predeterminada, no hay ninguna capa recurrente. Use la sintaxis n1:n2:n3 para especificar que las capas n1, n2 y n3 tienen conexiones recurrentes.

  • defaultHiddenActivity: el valor de actividad de capa oculta predeterminado utilizado por el nodo delay al acceder a los valores antes de la primera observación. El valor predeterminado es 0.1.

  • rnnType: el tipo de redes predefinidas. Los valores válidos son:

    • SIMPLENET: la red neuronal de reenvío de fuente. Este es el tipo de red predeterminado.
    • SIMPLERNN: el RNN simple, que puede ser un RNN profundo en el que varias capas tienen bucles recurrentes.
    • CLASSLM: RNN simple basado en clases. Usa entrada dispersa, parámetro disperso y salida dispersa. Esto suele usarse para las tareas de modelado de lenguaje.
    • LBLM: la red neuronal log-bilinear.
    • LSTM: la red neuronal de memoria a corto plazo.
    • CLASSLSTM: la red neuronal de memoria a corto plazo basada en clases. Usa entrada dispersa, parámetro disperso y salida dispersa. Esto suele usarse para las tareas de modelado de lenguaje.

A continuación: defina sus propias redes complejas con BrainScriptNetworkBuilder.