CNTK 사용 개요
CNTK 사용하려면 실행 파일 이진 파일을 다운로드하거나 소스 코드를 다운로드하여 컴퓨터에서 컴파일해야 합니다(세부 정보). CNTK 지원하는 세 가지 주요 작업(또는 작업)이 있습니다.
- 학습 - 네트워크를 정의하고 학습 데이터를 사용하여 학습된 모델을 생성하도록 학습
- 평가 - 테스트 데이터를 사용하여 성능을 평가하기 위해 학습된 모델 테스트
- 배포 - 학습된 모델(예: 사용자 고유의 솔루션)을 사용하여 새 인스턴스를 분류합니다.
이러한 각 작업에 대한 간략한 개요는 아래에 제공되며 보다 자세한 설명에 대한 포인터가 제공됩니다. 또한 기존 모델을 편집하고 파일에 노드 출력을 쓰는 등 CNTK 지원하는 다른 작업도 있습니다. 이에 대한 설명은 최상위 명령 페이지의 고급 항목 섹션에 제공됩니다.
CNTK 사용하여 모델 학습
CNTK 사용하여 신경망을 학습하려면 다음 세 가지 구성 요소를 구성해야 합니다.
- 네트워크: 구조/수식을 포함한 신경망, 모델 매개 변수. 학습 기준 및 평가 메트릭도 여기에 포함되어 있습니다.
- reader: 학습 데이터를 읽는 방법
- SGD: 확률 그라데이션 프로세스의 하이퍼 매개 변수
CNTK 실행 파일을 호출할 때 구성 파일을 통해 이 정보를 첫 번째 인수로 제공해야 합니다. 구성 파일은 특정 구문을 사용합니다. 구성 파일에 대한 자세한 내용은 구성 파일 개요 를 참조하세요.
다음에서는 MNIST 예제, 특히 '01_OneHidden_ndl_deprecated.cntk' 구성의 CNTK 구성 및 결과를 사용합니다(자세한 내용은 Image/GettingStarted 및 01_OneHidden.cntk 참조).
이 예제의 CNTK 명령줄은 .입니다cntk configFile=01_OneHidden_ndl_deprecated.cntk
. 다음 코드 조각에서는 학습과 관련된 구성 파일 콘텐츠에 대한 개요를 제공합니다.
modelDir = "$OutputDir$/Models"
deviceId = 0
command = MNISTtrain
modelPath = "$modelDir$/01_OneHidden"
MNISTtrain = [
action = "train"
# network definition
BrainScriptNetworkBuilder = (new ComputationNetwork
include "$ConfigDir$/01_OneHidden.bs"
)
# learner configuration
SGD = [
...
]
# reader configuration
reader = [
readerType = "CNTKTextFormatReader"
file = "$DataDir$/Train-28x28_cntk_text.txt"
...
]
]
위의 코드 조각은 를 사용하여 호출 MNISTtrain
action = "train"
된 명령을 정의합니다. 다른 지원되는 작업은 예 test
또는 write
.입니다. 매개 변수는 deviceId
CPU 또는 GPU를 사용할지 여부를 지정합니다. 설정"auto"
하면 CNTK 사용 가능한 가장 적합한 디바이스를 선택합니다. CPU를 -1
사용하거나 값 =0으로 >설정하여 특정 GPU를 사용하도록 설정합니다. 중간 modelPath
및 최종 학습된 모델을 저장할 위치를 정의합니다. 이 예제에서는 구성 파일의 시작 부분에 정의된 변수를 사용합니다 ModelDir
.
학습을 위한 세 가지 주요 구성 블록은 네트워크 자체와 학습 알고리즘 및 데이터 판독기 매개 변수를 정의합니다.
- 네트워크 작성기 - 여기서는 토폴로지와 네트워크의 세부 정보(예: 계층의 크기 및 수 및 노드 유형)를 정의합니다. 표준 모델에 는 Simple Network Builder 를 사용하거나 사용자 지정 모델에 대해 BrainScript 네트워크 작성기를 사용할 수 있습니다. 자세한 내용은 해당 페이지를 참조하세요.
- SGD - 이 블록을 사용하면 학습 알고리즘(확률적 그라데이션 하강)을 매개 변수화할 수 있습니다. 구성 가능한 옵션에는 모멘텀, 적응 학습 속도, 적응형 미니배치 크기, 병렬 학습이 포함됩니다. 자세한 내용은 SGD 블록을 참조하세요.
- reader - 판독기 블록은 사용할 판독기 및 해당 입력 파일의 위치를 정의합니다. CNTK 다양한 형식 및 작업에 대한 여러 데이터 판독기를 제공합니다(읽기 권한자 블록 참조).
마지막으로 이 줄 command = MNISTtrain
은 실행할 정의된 태스크를 지정합니다. 학습 및 평가와 같은 여러 작업을 연속적으로 실행하려면 콜론 command = "MNISTtrain:MNISTtest"
으로 구분된 명령에 작업을 더 추가하면 됩니다.
학습된 모델 평가
학습된 모델의 정확도를 평가하려면 또는 test
명령을 사용합니다eval
(자세한 내용은 학습, 테스트, Eval 참조). MNIST 01_OneHidden.cntk 예제의 해당 구성은 다음과 같습니다.
testNetwork = {
action = "test"
minibatchSize = 1024 # reduce this if you run out of memory
reader = {
readerType = "CNTKTextFormatReader"
file = "$DataDir$/Test-28x28_cntk_text.txt"
input = {
features = { dim = 784 ; format = "dense" }
labels = { dim = 10 ; format = "dense" }
}
}
}
블록은 MNISTtest
.를 사용합니다 action = "test"
. 작업의 test
경우 매개 변수를 사용하여 modelPath
테스트하는 데 사용해야 하는 모델을 정의해야 합니다. 이 예제 modelPath
에서는 블록 내부 MNISTtest
가 아니라 최상위 수준(위의 학습 부분 참조)에 정의되며 두 작업 모두에서 train
test
사용됩니다. 블록 내에서 reader
예제에서 테스트 Test-28x28.txt
에 사용해야 하는 데이터 파일을 지정합니다. 마지막으로 테스트를 실행하려면 설정하고 command = MNISTtest
실행 cntk configFile=01_OneHidden_ndl_deprecated.cntk
해야 합니다. 명령줄의 결과는 다음과 같습니다.
Final Results: Minibatch[1-625]: errs = 2.39% * 10000; ce = 0.076812531 * 10000; Perplexity = 1.0798396
COMPLETED!
사용자 고유의 코드에서 학습된 모델 사용
모델을 학습한 후에는 대상 환경에서 모델을 평가하는 기능이 필요합니다. CNTK 다양한 시나리오에서 모델을 제공하는 여러 방법을 제공합니다. C++, Python, C# 또는 기타 .NET 언어에서 학습된 모델을 사용할 수 있습니다. 컴퓨터 또는 Azure에서 평가를 실행할 수 있습니다. CNTK 모델 평가 섹션(사이드바 참조)에는 C++/Python/C#/Azure를 사용한 평가를 비롯한 많은 세부 정보가 있습니다.
다음 단계