次の方法で共有


Windows ML を使用してモデルをアプリに統合する

このガイドでは、Windows ML API を使用してモデルを Windows アプリに統合する方法について説明します。 または、Windows ML の自動コード ジェネレーターを使用する場合は、 mlgen を確認してください。

重要な API: Windows.AI.MachineLearning

次のような Windows ML の基本的な構成要素について説明します。

  • モデル
  • セッション
  • デバイス
  • バインド

これらを使用して、Windows ML を使用してモデルの読み込み、バインド、評価を行います。

また、 GitHub のサンプル アプリ を見て、エンド ツー エンドの Windows ML コード例を確認することをお勧めします。

次のビデオでは、これらの API が短いデモで動作している様子を示しています。


C++ での WinML API の使用

WinML API は C++/CX と C++/WinRT の両方で利用できますが、C++/WinRT バージョンを使用することをお勧めします。C++/WinRT バージョンを使用すると、より自然な C++ コーディングが可能になり、今後ほとんどの開発作業に重点が置かれているためです。 特定の状況に関連する以下の手順に従って、C++/WinRT API を使用できます。

  • Windows 1803 以前を対象としている場合は、「 チュートリアル: 既存の WinML アプリを NuGet パッケージに移植する」を参照してください。
  • 新しい C++ アプリケーションを作成する場合は、「 チュートリアル: Windows Machine Learning Desktop アプリケーション (C++) を作成する」を 参照し、手順に従って モデルを読み込みます
  • 既存の C++ アプリケーション (C++/WinRT 用にまだ設定されていない) がある場合は、次の手順に従って C++/WinRT 用にアプリケーションを設定します。
    1. Visual Studio 2019 の最新バージョン (任意のエディション) がインストールされていることを確認します。
    2. Windows 10 バージョン 1803 以降の SDK があることを確認します。
    3. Visual Studio Marketplace から C++/WinRT Visual Studio 拡張機能 (VSIX) をダウンロードしてインストールします。
    4. <CppWinRTEnabled>true</CppWinRTEnabled> プロパティをプロジェクトの.vcxproj ファイルに追加します。
      <Project ...>
          <PropertyGroup Label="Globals">
              <CppWinRTEnabled>true</CppWinRTEnabled>
      ...
      
    5. C++/WinRT には C++17 標準の機能が必要であるため、プロジェクトのプロパティで 、C/C++ > 言語 > C++ 言語標準 > ISO C++17 Standard (/std:c++17) を設定します。
    6. 準拠モードを設定する: プロジェクトのプロパティでははい (/permissive-) です。
    7. 注意すべきもう 1 つのプロジェクト プロパティは、 C/C++ > 一般的な > 警告をエラーとして扱うことです。 これを [はい] (/WX) または [いいえ] (/WX-) に設定します。 cppwinrt.exe ツールによって生成されたソース ファイルでは、実装を追加するまで警告が生成されることがあります。
    8. VSIX では、C++/WinRT 投影型の Visual Studio ネイティブ デバッグ視覚化 (natvis) も提供され、C# デバッグと同様のエクスペリエンスが提供されます。 Natvis はデバッグ ビルドに対して自動です。 シンボルWINRT_NATVISを定義することで、リリース ビルドをオプトインできます。
    9. これで、プロジェクトが C++/WinRT 用にセットアップされます。 詳細については、 C++/WinRT を参照してください。

Windows ML のヘルプについては、次のリソースを使用してください。

  • Windows ML に関する技術的な質問や回答を行うには、Stack Overflowwindows-machine-learning タグを使用してください。
  • バグを報告するには、GitHubで問題を報告してください。