此頁面包含社群中最熱門問題的解答。
如何?知道我是否將使用 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) ?
支援mlgen的Visual 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 上提出問題。