常見問題 (常見問題)

此頁面包含社群中最熱門問題的解答。

如何?知道我是否將使用 Windows ML 執行的 ONNX 模型?

使用 WinML 模型執行器工具,檢查您的模型是否會以 Windows ML 執行的最簡單方式。 或者,您可以檢查 ONNX 版本和 Windows 組建 ,以取得指定 Windows 版本所有支援的 ONNX 版本詳細資訊。

如何?將不同格式的模型轉換成 ONNX?

您可以使用 WinMLTools 將數種不同格式的模型轉換為 ONNX,例如 Apple CoreML 和 scikit-learn。

我在嘗試匯出和/或將模型轉換成 ONNX 時發生錯誤,指出我的模型具有「不支援的運算子」。 我該怎麼辦?

ONNX 版本目前可能不支援原生定型架構中的某些運算子。 首先,建議您檢查 目標 Windows 組建支援的 ONNX 版本,並嘗試將您的模型轉換為支援的最大版本。 相較于舊版,較新版本的 ONNX 包含較大型運算子集的支援。

如果您持續遇到問題,建議您與資料科學小組合作,嘗試並避免不支援的運算子。 我們建議的其中一種方法是變更來源架構中的模型架構,並嘗試將模型轉換成目標 ONNX 版本。 請注意,您不需要重新定型模型—您可以嘗試轉換架構,如果成功,您可以繼續完整重新定型模型。

為什麼我無法載入模型?

在 UWP 上開發時,您可能會有數個原因可能會無法載入模型,但在 UWP 上開發時,最常見的原因之一,是因為檔案存取限制。 根據預設,UWP 應用程式只能存取檔案系統的某些部分,並要求使用者權限或額外功能才能存取其他位置。 如需詳細資訊,請參閱 檔案存取權限

我應該使用哪一個版本的 WinMLTools?

我們一律建議您下載並安裝最新版本的 winmltools 套件。 這可確保您可以建立以最新版 Windows 為目標的 ONNX 模型。

我可以使用 onnxmltools 而不是 winmltools 嗎?

是,您可以,但您必須確定您安裝正確的 onnxmltools 版本,才能以 ONNX v1.2.2 為目標,這是 Windows ML 支援的最小 ONNX 版本。 如果您不確定要安裝哪一個版本,建議您改為安裝最新版本的 winmltools 。 這可確保您可以鎖定 Windows 支援的 ONNX 版本。

我應該使用哪一個版本的 Visual Studio 來自動產生程式碼, (mlgen) ?

支援mlgenVisual Studio最低建議版本是 15.8.7。 在 Windows 10 版本 1903 和更新版本中,mlgen不再包含在 SDK 中,因此您必須下載並安裝擴充功能。 Visual Studio 2017有一個,另一個適用于Visual Studio 2019

我在嘗試執行 mlgen 時收到錯誤訊息,而且不會產生任何程式碼。 可能發生的情況為何?

嘗試執行 mlgen 時最常見的兩個錯誤如下:

  • 缺少必要的屬性 'consumed_inputs':如果您遇到此錯誤訊息,您很可能嘗試使用 17763 或更新版本的 Windows 10 SDK 版本執行 ONNX v1.2 模型;建議您檢查 SDK 版本,並將它更新為 17763 版或更新版本。
  • 類型錯誤:輸入 (對應 (字串、tensor (float) ) ) 輸出引數 (遺失) 節點 (ZipMap) 不符合預期的類型...:如果您遇到此錯誤,則您的 ONNX 模型可能是比 WinML 從組建 17763 開始所接受的版本舊版本。 我們建議您將轉換器套件更新為最新的可用版本,並將模型重新對應至 1.2 版 ONNX。

WinML 預設會執行什麼?

如果您未指定要搭配 LearningModelDeviceKind執行的裝置,或者如果您使用 LearningModelDeviceKind.Default,系統會決定要評估模型的裝置。 這通常是 CPU。 若要在 GPU 上執行 WinML,請在建立 LearningModelDevice時指定下列其中一個值:

  • LearningModelDeviceKind.DirectX
  • LearningModelDeviceKind.DirectXHighPerformance
  • LearningModelDeviceKind.DirectXMinPower

注意

使用下列資源取得 Windows ML 的說明:

  • 如需詢問或回答有關 Windows ML 的技術問題,請使用 Stack Overflow 上的 windows-machine-learning 標籤。
  • 如需回報錯誤 (bug),請在 GitHub 上提出問題。