Comandos de topo com BrainScript

O comando train principal de topo etesteval/são descritos na página Train, Test, Eval. Outros comandos de topo são detalhados abaixo.

Comando Adapt

Este comando adapta um modelo já treinado usando regularização de divergência KL. Aconselha-se que todas as outras adaptações sejam realizadas através de edição de modelos. O comando adapt é muito semelhante ao comando de comboio, exceto que carrega mais dois parâmetros:

  • originalModelFileName: o nome do ficheiro do modelo que será adaptado.

  • refNodeName: o nome do nó na rede computacional que será usado para a regularização de divergência KL.

Currículo

Este comando avalia uma série de modelos de diferentes épocas num conjunto de desenvolvimento (ou validação cruzada) e apresenta a informação do melhor modelo. Para além dos parâmetros usados para o comando de teste, este comando também utiliza os parâmetros

  • crossValidationInterval: o array de 3 inteiros que identificam a época inicial, o incremento da época e a época final a avaliar. Por exemplo, 3:2:9 significa que os modelos 3, 5, 7 e 9 serão avaliados.

  • sleepTimeBetweenRuns: quantos segundos esperar entre as tentativas. Isto só é necessário se a tua GPU estiver demasiado quente.

Comando de Escrita

Este comando escreve o valor de um nó de saída num ficheiro. Os parâmetros relacionados são

  • reader: o bloco de configuração do leitor para ler os dados de entrada.

  • writer: o bloco de configuração do escritor para determinar como escrever os dados de saída. Se este valor não for especificado, será utilizado o parâmetro outputPath.

  • minibatchSize: o tamanho do minibatch a usar na leitura e processamento do conjunto de dados.

  • epochSize: o tamanho do conjunto de dados. O padrão é 0. Todo o conjunto de dados será avaliado se estiver definido para 0.

  • modelPath: o caminho até ao modelo a ser usado para calcular a saída.

  • outputPath: o caminho até ao ficheiro para escrever a saída num formato de texto. Se existir bloqueio de escritor, este parâmetro será ignorado. Ou outputPath ou writer devem existir.

  • outputNodeNames: um array de um ou mais nomes de nós de saída a serem escritos num ficheiro.

Editar Comando

Este comando edita um modelo e guarda o modelo modificado no ficheiro. Isso está obsoleto. Os parâmetros associados são:

  • editPath: o caminho para o script MEL a ser executado.
  • ndlMacros: o caminho para o ficheiro de macros NDL que será carregado e usado no script MEL.

Comando SVD

Este comando realiza uma aproximação de baixo nível com decomposição SVD dos parâmetros aprendíveis. A principal motivação é fatorizar uma matriz de pesos com duas matrizes de ordem inferior para melhorar a velocidade de inferência, preservando a precisão. Por exemplo:

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

Os blocos de parâmetros associados são:

  • modelPath: especifica onde carregar o modelo inicial.

  • outputModelPath: especifica onde guardar o modelo revisto.

  • SVDConfig: um ficheiro de configuração que especifica como o SVD é executado para diferentes grupos de nós. Esta configuração tem um formato de duas colunas:

    <NodeNameRegex> <float>

A primeira coluna é uma expressão regular que corresponde ao nome do nó num grupo. A segunda coluna é um float que indica qual a percentagem da energia SVD que será mantida após a SVD, onde a energia SVD é definida como a soma dos valores singulares. Por exemplo, a configuração

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

causará uma decomposição SVD (0,4) mais agressiva para as ligações não recorrentes (de x para portas i,f,c,o) em LSTM e uma decomposição SVD menos agressiva para ligações recorrentes (de h para portas i,f,c,o), onde os nomes dos parâmetros são definidos no NDL.

Comando Dumpnode

Este comando despeja a informação do(s) nodo(s) para um ficheiro de saída, o que também pode ser realizado no MEL com maior controlo. Os parâmetros relacionados são:

  • modelPath: o caminho para o ficheiro do modelo que contém os nós a despejar.

  • nodeName: o nome do nó a ser escrito num ficheiro. Se não for especificado, todos os nós serão deslocados.

  • nodeNameRegex: a expressão regular para os nomes dos nós a serem escritos num ficheiro. Se especificado, o nodeName parâmetro é ignorado.

  • outputFile: o caminho para o ficheiro de saída. Se não for especificado, um nome de ficheiro será gerado automaticamente com base no modelPath.

  • printValues: determina se imprime os valores associados a um nó se os valores do nó forem mantidos no modelo. A predefinição é verdadeira.

  • printMetadata: determina se deve imprimir os metadados (nome do nó, dimensões, etc.) associados a um nó. A predefinição é verdadeira.

Comando WriteWordAndClass (obsoleto)

Este comando lê os dados de treino do texto, conta o número de ocorrências de cada palavra no conjunto de treino, ordena as palavras pela ordem decrescente das contagens, atribui a cada palavra um id único, atribui cada palavra a uma classe e gera um ficheiro de vocabulário de quatro colunas e um ficheiro de mapeamentoto-id palavra para serem usados pelo (obsoleto) LMSequenceReader para treinar modelos de linguagem baseados em classes. Os parâmetros relacionados são:

  • inputFile: o caminho para o ficheiro de treino de texto.

  • outputVocabFile: o nome do ficheiro de vocabulário gerado em quatro colunas. A primeira coluna é o id da palavra, a segunda coluna é a contagem da palavra, a terceira coluna é a palavra e a quarta coluna é o id da classe.

  • outputWord2Cls: o caminho para o ficheiro de mapeamento gerado palavra-para-classe.

  • outputCls2Index: o caminho para o ficheiro de mapeamento gerado da classe para o wordId.

  • vocabSize: o tamanho desejado do vocabulário.

  • nbrClass: o número desejado de classes.

  • cutoff: a contagem de corte. Quando a contagem de uma palavra é inferior ou igual a esse valor, a palavra será tratada como <unk>. O padrão é 2. Note que este parâmetro é usado apenas se o tamanho desejado do vocabulário for maior do que o número real de palavras existentes no conjunto de treino.

Comando CreateLabelMap

Muitas vezes é fácil criar manualmente o ficheiro de mapeamento de etiquetas. Por vezes, no entanto, prefere que o ficheiro de mapeamento de etiquetas seja gerado automaticamente, que é o objetivo do comando CreateLabelMap. Atualmente, o UCIFastReader é o único leitor que apoia esta ação. Os parâmetros relacionados são

  • section: o nome do bloco de parâmetros (normalmente um bloco de comboio) que tem o subbloco leitor que será usado para gerar o ficheiro de mapeamento de etiquetas. O ficheiro de mapeamento de etiquetas gerado será guardado no labelMappingFile especificado no subbloco leitor deste bloco de parâmetros.

  • minibatchSize: o tamanho do minibatch a usar ao criar o ficheiro de mapeamento de etiquetas.

Comando DoEncoderDecoder

Redes neuronais podem ser usadas para formar uma cadeia de redes. As primeiras redes podem funcionar como codificadores e as redes seguintes podem servir como descodificadores. Um nó especial, PairNetworkNode, é usado em cada rede para servir um socket a ser ligado por outras redes. Os parâmetros relacionados são

  • section: o codificadorReader e decoderReader são os leitores para codificador e decodificador. De forma semelhante, para encoderCVReader e decoderCVReader para conjunto de validação.

  • encoderNetworkBuilder e decoderNetworkBuilder: Estes especificam o construtor de rede simples a utilizar.

Comando BNStat

Avaliar a média e a variância da avaliação e teste do conjunto de dados para o nó de normalização por lote é complicado. Embora a média e a variância possam ser calculadas através da média contínua ou exp durante o treino, tendemos ainda a fornecer um método mais estável e robusto para gerar a média e a variância da normalização em lote — estatísticas pós-normalização em lote. O comando tem de ser chamado após o treino. Gera a média e a variância para cada camada BN.

  • modelPath: o caminho para o ficheiro do modelo que contém o modelo treinado
  • minibatchSize: o tamanho do mini-lote durante a avaliação, o mesmo com o minibatchSize de treino
  • itersPerNode: as iterações estatísticas para cada nó de normalização por lote
  • reader: o bloco de configuração do leitor para ler os dados de teste. Para mais detalhes, veja Bloco de leitor
  • enableDistributedMBReading: leitura distribuída em treino paralelo