Вывод модели onnx (opset11) в Windows 10 c ++? - PullRequest
1 голос
/ 09 июля 2020

Чтобы использовать свою пользовательскую модель TF через WinML, я преобразовал ее в onnx с помощью конвертера tf2onnx. Преобразование, наконец, сработало с использованием opset 11. К сожалению, я не могу загрузить модель в библиотеку WinRT c ++, поэтому меня смущает поддержка opset: согласно примечаниям к выпуску, последний выпуск WinML в мае поддерживает opset 11. Я обновил свой VS2019 и скачал последний Windows 10 SDK, c ++ API уже включает последнюю поддержку onnx? Или есть альтернативный способ использовать мою модель в WinML c ++?

Ответы [ 2 ]

1 голос
/ 17 июля 2020

Последний выпуск ОС Windows содержит поддержку opset 9. Последний выпуск пакета NuGet Microsoft.AI.MachineLearning содержит поддержку opset 11.

См. Следующие примечания к выпуску: https://docs.microsoft.com/en-us/windows/ai/windows-ml/release-notes

Вы можете найти последний пакет NuGet Microsoft.AI.MachineLearning здесь: https://www.nuget.org/packages/Microsoft.AI.MachineLearning/

0 голосов
/ 07 августа 2020

Как упоминал @Kookei, есть 2 способа создания WinML: способ «In-Box» и способ NuGet .

In-Box в основном просто означает ссылку на любые библиотеки DLL WinML, которые включены в сам Windows (например, в C: \ Window \ System32).

Пакет NuGet содержит собственный более свежий набор библиотек DLL, кроме Обеспечение поддержки новейшего набора опций ONNX имеет очевидное преимущество, так как позволяет легко распространять двоичный файл на более старые версии Windows, лишенные каких-либо встроенных возможностей машинного обучения. Просто установите пакет через диспетчер пакетов Nuget в Visual Studio и создайте свое решение; и вы обнаружите, что выходной каталог теперь содержит необходимые библиотеки DLL (в настоящее время directml.dll, Microsoft.AI.MachineLearning.dll и onnxruntime.dll) вместе со сгенерированным EXE, готовым к развертыванию в той же папке.

В терминах исходного кода, вот как две версии: различаются :

In-Box:

#include <winrt/Windows.AI.MachineLearning.h>
using WinMLModel = winrt::windows::AI::MachineLearning

NuGet:

#include <winrt/Microsoft.AI.MachineLearning.h>
using WinMLModel = winrt::Microsoft::AI::MachineLearning

In Другими словами, разница только в том, используете ли вы заголовок / пространство имен Window или Microsoft.

...