BrainScript 구성 파일 개요

CNTK 실행하려면Exp.cntk가 일반적으로 여러 명령 블록을 포함하는 CNTK 구성 파일인 위치와 유사한 cntk configFile=yourExp.cntk 명령줄을 사용합니다. 명령 블록은 구성의 최상위 블록입니다. 각 명령 블록은 관련 정보를 사용하여 수행할 작업을 지정해야 합니다. 구성 및 명령 블록을 설명하기 위해 아래의 간단한 예제를 사용합니다( 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"
            ]
        ]
    ]
]

이 예제에서는 모든 구성 값이 이름-값 쌍으로 지정되어 있음을 알 수 있습니다. 값은 숫자, 문자열, 목록 또는 구성 블록일 수 있습니다. 이 예제와 같이 DataDir 변수를 지정하고 표기법을 사용하여 스크립트의 뒷부분에서 다시 참조할 수 있습니다 $DataDir$.

최상위 구성 매개 변수 command 는 실행할 명령 블록과 둘 이상의 명령 블록이 지정된 경우 실행할 순서를 결정합니다. 이 예제에서는 mnistTrain 명령 블록이 실행됩니다. 이 명령 블록은 실행할 작업을 지정합니다. 이 경우입니다 train . 학습 작업과 관련된 매개 변수 블록이 세 개 있는 경우가 많습니다.

  • 네트워크를 처음부터 빌드하는 방법과 기존 모델 파일에서 모델을 로드하는 방법을 지정하는 네트워크 작성기 블록
  • 사용할 학습 알고리즘을 지정하는 학습자 블록
  • 기능 및 레이블을 로드하는 위치와 방법을 지정하는 판독기 블록입니다.

이 특정 예제에서는 BrainScriptNetworkBuilder 블록으로 표시된 네트워크 작성기를 사용하여 네트워크를 정의하고, SGD 블록에 표시된 확률적 그라데이션 하강 학습 알고리즘을 사용하여 모델을 학습시키고, CNTK 텍스트 형식 판독기를 사용하여 CNTK 텍스트 형식의 파일에서 기능 및 레이블을 로드합니다. 판독기는 별도의 DLL로 구현되며 판독기의 이름은 데이터를 읽기 위해 로드될 DLL 파일의 이름이기도 합니다.

가장 자주 사용되는 구성 블록은 다음과 같습니다.

  • 네트워크 작성기
    • SimpleNetworkBuilder - 제한된 사용자 지정으로 미리 정의된 네트워크 중 하나를 만듭니다.
    • BrainScriptNetworkBuilder - CNTK 네트워크 설명 언어(BrainScript)를 사용하여 정의된 네트워크를 만듭니다. 사용자 고유의 네트워크 작업 및 구조를 설계할 때 유연성을 제공합니다.
  • 학습자
    • SGD - 확률적 그라데이션 하강 알고리즘을 사용하여 모델을 학습합니다. 그것은 대부분의 응용 프로그램에 대한 원하는 트레이너입니다.
  • 데이터 판독기
    • CNTK 텍스트 서식 판독기 - 동일한 파일에 결합된 여러 입력을 지원하는 텍스트 기반 CNTK 형식을 읽습니다.
    • UCI 빠른 판독기(사용되지 않음) - 하나의 파일에 결합된 레이블과 기능이 포함된 텍스트 기반 UCI 형식을 읽습니다.
    • HTKMLF 판독기 - 음성 인식 애플리케이션에서 자주 사용되는 HTK/MLF 형식 파일을 읽습니다.
    • LM 시퀀스 판독기 - 단어 시퀀스를 예측하기 위해 단어 시퀀스가 포함된 텍스트 기반 파일을 읽습니다. 이는 종종 언어 모델링에 사용됩니다.
    • LU 시퀀스 판독기 - 단어 시퀀스 및 해당 레이블이 포함된 텍스트 기반 파일을 읽습니다. 이는 종종 언어 이해에 사용됩니다.

다음 하위 섹션에서는 CNTK 구성 및 위의 블록에 대해 자세히 설명합니다. 위 텍스트의 링크를 사용하여 개별 블록으로 이동할 수도 있습니다.

참고 항목