Compartilhar via


Construtor de Rede Simples

O SimpleNetworkBuilder permite usar tipos de rede padrão simples com poucas linhas de configuração. Há suporte apenas para um conjunto limitado de opções de configuração. Redes mais complexas podem ser definidas usando o BrainScriptNetworkBuilder em vez disso.

Para usar SimpleNetworkBuilder, inclua um bloco de configuração com o mesmo nome em sua configuração de treinamento. Quando uma opção é omitida, o valor padrão é assumido. Primeiro, fornecemos um exemplo conciso e listamos todos os parâmetros e opções de controle abaixo.

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
]

No exemplo acima, 'trainingCriterion' e 'layerTypes' podem ser omitidos, pois estão usando os valores padrão. Os seguintes parâmetros estão disponíveis:

  • initValueScale: o valor para dimensionar o intervalo dos números aleatórios usados para inicialização. O padrão é 1. Se os parâmetros de modelo forem inicializados usando a distribuição uniforme, o intervalo de números aleatórios será ajustado para [-0.05 * initValueScale, 0.05 * initValueScale]. Se os parâmetros de modelo forem inicializados usando a distribuição gaussiana, o desvio padrão será ajustado para 0.2 * initValueScale * fanout^(-1/2).

  • layerTypes: o tipo de operação não linear em camadas ocultas. Os valores válidos são Sigmoid (padrão), Tanh e RectifiedLinear.

  • uniformInit: determina se a distribuição uniforme deve ser usada para inicializar parâmetros de modelo. Os valores válidos são true (padrão) e false (usando a distribuição gaussiana para inicializar parâmetros de modelo).

  • applyMeanVarNorm: se a normalização média/variação deve ser aplicada na entrada. Os valores válidos são true e false (padrão).

  • addDropoutNodes: se você deve adicionar nós de desistência. O padrão é false. Se especificado, trueum nó de desistência será aplicado ao nó de entrada e à saída de cada camada oculta.

  • layerSizes: especifica as dimensões das camadas. Por exemplo, layerSizes=128:10:200:4000 descreve uma rede neural com duas camadas ocultas. A primeira camada oculta tem uma dimensão de 10 e a segunda camada oculta tem uma dimensão de 200. As camadas de entrada e saída têm uma dimensão de 128 e 4000, respectivamente.

  • trainingCriterion: o critério usado para treinamento. O padrão é CrossEntropyWithSoftmax. As alternativas são SquareError, CrossEntropye ClassBasedCrossEntropyWithSoftmax. A ClassBasedCrossEntropyWithSoftmax opção é o treinamento baseado em classe, o que seria útil se a dimensão de saída fosse grande e, portanto, precisasse ser dividida em classes para acelerar o treinamento e a avaliação.

  • evalCriterion: o critério de avaliação. A seleção de valores é igual à .trainingCriterion

  • lookupTableOrder: especifica a ordem de expansão de contexto no lookupNode. O valor padrão é 1. Defini-la como um valor como 3 expandiria a dimensão de entrada de forma dependente de contexto por uma ordem de 3. Por exemplo, se a observação de entrada tiver uma dimensão de 20, definir esse valor como 3 definirá a dimensão do nó de entrada como 60.

Para RNNs (redes neurais recorrentes), há parâmetros adicionais.

  • recurrentLayer: especifica as camadas que contêm conexões auto-recorrentes. Por padrão, não há camada recorrente. Use a sintaxe n1:n2:n3 para especificar que as camadas n1, n2 e n3 têm conexões recorrentes.

  • defaultHiddenActivity: o valor de atividade de camada oculta padrão usado pelo nó de atraso ao acessar valores antes da primeira observação. O valor padrão é 0.1.

  • rnnType: o tipo de redes predefinidas. Os valores válidos são:

    • SIMPLENET: a rede neural feed-forward. Esse é o tipo de rede padrão.
    • SIMPLERNN: o RNN simples, que pode ser um RNN profundo no qual várias camadas têm loops recorrentes.
    • CLASSLM: o RNN simples baseado em classe. Ele usa entrada esparsa, parâmetro esparso e saída esparsa. Isso geralmente é usado para tarefas de modelagem de idioma.
    • LBLM: a rede neural log-bilinear.
    • LSTM: a rede neural de memória de longo prazo.
    • CLASSLSTM: a rede neural de memória de curto prazo baseada em classe. Ele usa entrada esparsa, parâmetro esparso e saída esparsa. Isso geralmente é usado para tarefas de modelagem de idioma.

Em seguida: defina suas próprias redes complexas com BrainScriptNetworkBuilder.