Comandos de alto nível com BrainScript
O comando train
principal de nível superior etest
eval
/é 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, onodeName
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
edecoderNetworkBuilder
: 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 treinadosminibatchSize
: o tamanho do mini-lote durante a avaliação, o mesmo com o minibatchSize de treinoitersPerNode
: as iterações estatísticas para cada nó de normalização do lotereader
: o bloco de configuração do leitor para ler os dados do teste. Para mais detalhes consulte o bloco ReaderenableDistributedMBReading
: leitura distribuída em formação paralela