Поделиться через


Оценка EvalDLL на Windows

Библиотека EvalDll на Windows предоставляется как C++, так и библиотека C#. Пакет NuGet также доступен в nuget.org. Обратите внимание, что требуется Visual Studio 2015 с обновлением 3, а целевая платформа в свойстве проекта должна быть X64.

Использование библиотеки EvalDll

Библиотека EvalDll обеспечивает программную оценку модели на ЦП (GPU не поддерживается).
Шаблон использования для этой библиотеки DLL имеет следующий формат:

  1. Свяжите библиотеку импорта Cntk.Eval-<VERSION>.lib с приложением. Убедитесь, что вы используете правильное имя файла. См. начало этой статьи.
  2. Включите файл заголовка оценки "Eval.h"
  3. Получение экземпляра обработчика вычислений, относяющегося к типу данных модели (float или double).
  4. Загрузите модель (или создайте сеть) в подсистеме оценки.
  5. Оцените некоторые входные данные для модели и получите соответствующие выходные данные.
  6. Удалите модель по завершении.

Дополнительные сведения об API C++, предоставляемом EvalDll, см. на странице API C++ EvalDll .

Программа CPPEvalClient , расположенная в папке Examples/Evaluation/LegacyEvalDll/CPPEvalClient , демонстрирует использование этого интерфейса оценки. Сведения о сборке и запуске примеров см. на странице примеров EvalDll .

Использование библиотеки C# EvalDll

CNTK предоставляет оболочку управляемой библиотеки Cntk.Eval.Wrapper(.Net). Эта библиотека создает оболочку для собственной библиотеки EvalDll и предоставляет управляемый интерфейс. Этот интерфейс предоставляет те же функции, что и собственный интерфейс, с добавлением некоторых удобных методов. Как и его собственный аналог, эта библиотека может выполнять оценки только с помощью ЦП (без использования GPU). Библиотека написана на языке CLI/C++ и, таким образом, формирует мост между .Net (например, C#) и собственной стороной C++.

Дополнительные сведения об управляемом API, предоставленном EvalWrapper.DLL, см. на странице управляемого API EvalDll .

Шаблон использования управляемой оболочки прост:

using Microsoft.MSR.CNTK.Extensibility.Managed;
...
try
{
    using (var model = new IEvaluateModelManagedF())
    {
        // Load model
        model.CreateNetwork(...);
        model.Evaluate(...);
    }
}
catch (CNTKException ex)
{
...
}
catch (Exception ex)
{
...
}

Существует несколько примеров выполнения программной CNTK оценки модели в C# внутри проекта CSEvalClient. Сведения о сборке и запуске примеров см. на странице примеров EvalDll .

Пакет NuGet

В настоящее время существует пакет NuGet на nuget.org (поиск CNTK), который предоставляет как собственные, так и управляемые версии для библиотек оценки CNTK (ЦП только с помощью MKL). С помощью NuGet можно просто добавить CNTK Eval NuGet в проект .Net или Win32 и вызвать API. Дополнительные сведения о начале работы с CNTK и NuGet см. на странице пакета NuGet.

Если вы не хотите использовать пакет NuGet, можно добавить Cntk.Eval.Wrapper-<VERSION>.dll в качестве ссылки на проект. В этом случае убедитесь, что путь к Cntk.Eval.Wrapper библиотеке DLL и его зависимостям включен в путь поиска библиотек DLL для приложения.

Доставка библиотеки EvalDll с помощью приложения Windows

EvalDll требует установки пакета Распространяемый компонент Visual C++ для Visual Studio 2015 в системе, в которой будет выполняться приложение. Целевая платформа в свойстве проекта должна быть X64.

На этой странице описывается, как именуются двоичные файлы CNTK.

Если у вас есть приложение, использующее библиотеку EvalDll, необходимо распространить эти библиотеки DLL вместе с приложением:

  • Cntk.Eval-<VERSION>.dll
  • Cntk.Eval.Wrapper-<VERSION>.dll
  • Cntk.Math-<VERSION>.dll
  • libiomp5md.dll
  • mklml.dll

Все эти библиотеки DLL можно найти в CNTK версии двоичного выпуска, см. на странице CNTK Выпуски.