Windows EvalDLL 평가
Windows EvalDll 라이브러리는 C++ 및 C# 라이브러리로 제공됩니다. nuget.org NuGet 패키지도 사용할 수 있습니다. Visual Studio 2015 업데이트 3이 필요하며 프로젝트 속성의 대상 플랫폼은 X64여야 합니다.
EvalDll 라이브러리 사용
EvalDll 라이브러리를 사용하면 CPU에서 프로그래밍 방식으로 모델을 평가할 수 있습니다(GPU는 지원되지 않음).
이 DLL의 사용 패턴은 다음과 같습니다.
- 가져오기 라이브러리를
Cntk.Eval-<VERSION>.lib
애플리케이션에 연결합니다. 올바른 파일 이름을 사용하는지 확인합니다. 이 문서의 시작 부분을 참조하세요. - 평가 헤더 파일 "Eval.h"를 포함합니다.
- 모델의 데이터 형식(
float
또는double
)에 해당하는 평가 엔진의 인스턴스를 가져옵니다. - 평가 엔진에서 모델을 로드하거나 네트워크를 만듭니다.
- 모델에 대한 일부 입력을 평가하고 해당 출력을 가져옵니다.
- 완료되면 모델을 삭제합니다.
EvalDll에서 제공하는 C++ API에 대한 자세한 내용은 EvalDll C++ API 페이지를 참조하세요.
Examples/Evaluation/LegacyEvalDll/CPPEvalClient 폴더에 있는 CPPEvalClient 프로그램은 이 평가 인터페이스의 사용을 보여 줍니다. 예제를 빌드하고 실행하는 방법은 EvalDll 예제 페이지를 참조하세요.
EvalDll C# 라이브러리 사용
CNTK 명명Cntk.Eval.Wrapper
된 관리형(.Net) 라이브러리 래퍼를 제공합니다. 이 라이브러리는 네이티브 EvalDll 라이브러리를 래핑하고 관리되는 인터페이스를 노출합니다. 이 인터페이스는 몇 가지 편리한 메서드를 추가하여 네이티브 인터페이스와 동일한 기능을 제공합니다.
네이티브 라이브러리와 마찬가지로 이 라이브러리는 CPU(사용된 GPU 없음)를 사용하여만 평가를 수행할 수 있습니다. 라이브러리는 CLI/C++로 작성되므로 .Net(예: C#)과 네이티브 C++ 쪽 간에 브리지를 형성합니다.
EvalWrapper.DLL 제공하는 관리되는 API에 대한 자세한 내용은 EvalDll Managed API 페이지를 참조하세요.
관리되는 래퍼의 사용 패턴은 간단합니다.
using Microsoft.MSR.CNTK.Extensibility.Managed;
...
try
{
using (var model = new IEvaluateModelManagedF())
{
// Load model
model.CreateNetwork(...);
model.Evaluate(...);
}
}
catch (CNTKException ex)
{
...
}
catch (Exception ex)
{
...
}
CSEvalClient 프로젝트 내에서 C#에서 프로그래밍 방식 CNTK 모델 평가를 수행하는 몇 가지 예가 있습니다. 예제를 빌드하고 실행하는 방법은 EvalDll 예제 페이지를 참조하세요.
NuGet 패키지
현재 nuget.org(CNTK 검색)에는 CNTK 평가 라이브러리에 대한 디버그 및 릴리스에 대한 네이티브 버전과 관리되는 버전(MKL만 사용하는 CPU)을 모두 제공하는 NuGet 패키지가 있습니다. NuGet 사용하면 CNTK Eval NuGet .Net 또는 Win32 프로젝트에 추가하고 API를 호출할 수 있습니다. CNTK 및 NuGet 시작하는 방법에 대한 자세한 내용은 NuGet 패키지 페이지를 참조하세요.
NuGet 패키지를 사용하지 않으려면 프로젝트에 대한 참조로 추가할 Cntk.Eval.Wrapper-<VERSION>.dll
수 있습니다. 이 경우 DLL 경로 Cntk.Eval.Wrapper
와 아래의 종속성이 애플리케이션에 대한 DLL의 검색 경로에 포함되어 있는지 확인하세요.
Windows 애플리케이션을 사용하여 EvalDll 라이브러리 배송
EvalDll은 Visual Studio 2015용 Visual C++ 재배포 가능 패키지 패키지를 애플리케이션이 실행될 시스템에 설치해야 합니다. 그리고 프로젝트 속성의 대상 플랫폼은 X64여야 합니다.
이 페이지에서는 CNTK 이진 파일의 이름을 지정하는 방법을 설명합니다.
애플리케이션이 EvalDll 라이브러리를 사용하는 경우 애플리케이션과 이러한 DLL을 배포해야 합니다.
Cntk.Eval-<VERSION>.dll
Cntk.Eval.Wrapper-<VERSION>.dll
Cntk.Math-<VERSION>.dll
libiomp5md.dll
mklml.dll
이러한 모든 DLL은 CNTK 이진 릴리스 버전에서 찾을 수 있습니다. CNTK 릴리스 페이지를 참조하세요.