Partilhar via


Comandos de alto nível com BrainScript

O comando train principal de nível superior etesteval/é descrito na página Train, Test, Eval. Outros comandos de alto nível são detalhados abaixo.

Adaptar comando

Este comando adapta um modelo já treinado usando a regularização da divergência KL. É aconselhável que todas as outras adaptações sejam efetuadas utilizando a edição de modelos. O comando de adaptação é muito semelhante ao comando do comboio, exceto que transporta mais dois parâmetros:

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

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

CV

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

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

  • sleepTimeBetweenRuns: quantos segundos para esperar entre as corridas. Isto só é necessário se a sua GPU estiver muito quente.

Escrever Comando

Este comando escreve o valor de um nó de saída para um 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, o parâmetro de saídaApasão será utilizado.

  • minibatchSize: o tamanho da minibatch a utilizar ao ler e processar o 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 para o modelo a utilizar para calcular a saída.

  • outputPath: o caminho para o ficheiro para escrever a saída num formato de texto. Se o bloco de escritores existir este parâmetro será ignorado. Ou outputPath ou escritor deve existir.

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

Comando editar

Este comando edita um modelo e guarda o modelo modificado para arquivar. Isto é precotado. Os parâmetros associados são:

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

Comando SVD

Este comando conduz uma aproximação de baixa patente com a decomposição SVD de parâmetros apreciáveis. A motivação principal é fatorizar uma matriz de peso com duas matrizes de nível 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 salvar o modelo revisto.

  • SVDConfig: um ficheiro config que especifica como o SVD é realizado para diferentes grupos de nós. Este config está num formato de duas colunas:

    <NodeNameRegex> <float>

A primeira coluna é uma expressão regular que combina com o nome do nó num só grupo. A segunda coluna é uma boia que indica qual a percentagem de SVDenergy que será mantida após sVD, onde a energia SVD é definida como a soma de valores singulares. Por exemplo, o config

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

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

Comando de Dumpnode

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

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

  • nodeName: o nome do nó a escrever num ficheiro. Se não forem especificados, todos os nós serão despejados.

  • nodeNameRegex: a expressão regular para os nomes dos nós 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 modeloPath.

  • printValues: determina se imprimi os valores associados a um nó se os valores do nó forem persistidos no modelo. A predefinição é verdadeiro.

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

WriteWordAndClass Command (preterido)

Este comando lê os dados de formação de texto, conta o número de ocorrências de cada palavra no conjunto de treino, classifica as palavras na ordem descendente dos condes, dá a cada palavra um id único, atribui cada palavra a uma classe, e gera um ficheiro vocabulário de quatro colunas e um ficheiro de mapeamento de palavras a id para ser usado pelo LMSequenceReader (depreciado) para treinar modelos de linguagem baseada em classes. Os parâmetros relacionados são:

  • inputFile: o caminho para o ficheiro de formação por texto.

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

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

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

  • vocabSize: o tamanho do vocabulário desejado.

  • nbrClass: o número desejado de aulas.

  • cutoff: a contagem de cortes. Quando a contagem de uma palavra estiver abaixo ou igual a este valor, a palavra será tratada como . O padrão é 2. Note que este parâmetro só é utilizado se o tamanho do vocabulário desejado 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 da etiqueta. Por vezes, porém, prefere que o ficheiro de mapeamento da etiqueta seja gerado automaticamente, que é o objetivo do comando CreateLabelMap. Atualmente o UCIFastReader é o único leitor que suporta esta ação. Os parâmetros relacionados são

  • section: o nome do bloco de parâmetros (normalmente um bloco de comboios) que tem o sub-bloco do leitor que será utilizado para gerar o ficheiro de mapeamento da etiqueta. O ficheiro de mapeamento da etiqueta gerada será guardado na etiquetaMappingFile especificada no sub-bloco do leitor deste bloco de parâmetros.

  • minibatchSize: o tamanho da minibatch a utilizar ao criar o ficheiro de mapeamento da etiqueta.

Comando DoEncoderDecoder

As redes neuronais podem ser usadas para formar uma cadeia de redes. As primeiras redes podem funcionar como codificadores e as seguintes redes podem servir de descodificações. Um nó especial, PairNetworkNode, é usado em cada rede para servir uma tomada para ser conectada por outras redes. Os parâmetros relacionados são

  • section: o codificadorReader e o descoderReader são os leitores de codificadores e descodificador. Da mesma forma para o encoderCVReader e descodificadorCVReader para conjunto de validação.

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

Comando BNStat

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

  • modelPath: o caminho para o ficheiro modelo que contém modelo treinados
  • 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 do lote
  • reader: o bloco de configuração do leitor para ler os dados do teste. Para mais detalhes consulte o bloco Reader
  • enableDistributedMBReading: leitura distribuída em formação paralela