Partilhar via


Visão geral do ficheiro config do BrainScript

Para executar CNTK utilize uma linha de comando semelhante à cntk configFile=yourExp.cntk do seuExp.cntk é um ficheiro de configuração CNTK, que normalmente contém vários blocos de comando. Um bloco de comando é um bloco de nível superior da configuração. Cada bloco de comando deve especificar que ação deve ser realizada com informações relacionadas. Para ilustrar a configuração e os blocos de comando, usamos um exemplo simples abaixo (retirado do exemplo MNIST).

rootDir = ".."   # often, this is overwritten on the command line

configDir = "$rootDir$/Config"
dataDir   = "$rootDir$/Data"
outputDir = "$rootDir$/Output"
modelDir  = "$outputDir$/Models"

command = mnistTrain

mnistTrain = [
    action = "train"

    # network definition
    BrainScriptNetworkBuilder = (new ComputationNetwork
        include "$ConfigDir$/01_OneHidden.bs"
    )

    # SGD learner configuration
    SGD = [
        modelPath = "$ModelDir$/01_OneHidden_Model.dnn"
        epochSize = 60000
        minibatchSize = 32
        learningRatesPerMB = 0.1
        maxEpochs = 30
    ]

    # reader configuration    
    reader = [
        readerType = "CNTKTextFormatReader"
        file = "$DataDir$/Train-28x28_cntk_text.txt"
        input = [
            features = [
                dim = 784
                format = "dense"
            ]
            labels = [
                dim = 10
                format = "dense"
            ]
        ]
    ]
]

Neste exemplo, pode notar que todos os valores de configuração são especificados como um par de valor-nome. Um valor pode ser um numérico, uma corda, uma lista, ou mesmo um bloco de configurações. Pode especificar variáveis, como DataDir neste exemplo, e remeter para elas mais tarde no script utilizando a notação $DataDir$.

O parâmetro command de configuração de nível superior determina quais os blocos de comando a executar e em que ordem são executados se for especificado mais de um bloco de comando. Neste exemplo, o mnistTrain bloco de comando será executado. Este bloco de comando especifica a ação a executar, que é train neste caso. Existem frequentemente três blocos de parâmetros associados à ação do comboio:

  • um bloco de construtores de rede, que especifica como construir uma rede a partir do zero e como carregar uma modelo a partir de um ficheiro modelo existente,
  • um bloco de aprendizes, que especifica o algoritmo de treino a utilizar,
  • um bloco de leitores, que especifica onde e como carregar funcionalidades e etiquetas.

Neste exemplo específico, o construtor de rede indicado pelo bloco BrainScriptNetworkBuilder é utilizado para definir a rede, o algoritmo de aprendizagem de gradiente estocástico como indicado pelo bloco SGD é usado para treinar o modelo, e o leitor de formato de texto CNTK é usado para carregar as funcionalidades e etiquetas de ficheiros em formato CNTK Text. Note que os leitores são implementados como DLLs separados, e o nome do leitor é também o nome do ficheiro DLL que será carregado para ler dados.

Os blocos de configuração mais utilizados são:

  • Construtores de rede
    • SimpleNetworkBuilder - cria uma das redes predefinidas com uma personalização limitada.
    • BrainScriptNetworkBuilder - cria uma rede definida utilizando o idioma de descrição da rede de CNTK (BrainScript). Proporciona total flexibilidade na conceção das suas próprias operações de rede e estrutura.
  • Alunos
    • SGD - usa o algoritmo de descida do gradiente estocástico para treinar o modelo. É o treinador desejado para a maioria das candidaturas.
  • Leitores de Dados
    • CNTK Text Format Reader - lê o formato CNTK baseado em texto, que suporta múltiplas entradas combinadas no mesmo ficheiro.
    • UCI Fast Reader (precotado) - lê o formato UCI baseado em texto, que contém etiquetas e funcionalidades combinadas num único ficheiro.
    • HTKMLF Reader - lê os ficheiros de formato HTK/MLF, frequentemente utilizados em aplicações de reconhecimento de voz.
    • LM Sequence Reader - lê ficheiros baseados em texto que contêm sequências de palavras, para prever sequências de palavras. Isto é frequentemente usado na modelação linguística.
    • LU Sequence Reader - lê ficheiros baseados em texto que contêm sequências de palavras e suas etiquetas. Isto é frequentemente usado para a compreensão da linguagem.

Nas subsecções seguintes, descreveremos CNTK configuração e os blocos acima em detalhe. Também pode saltar para os blocos individuais utilizando os links do texto acima.

Ver também