日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

ML.NET 示例:将ML.NET模型导出到ONNX

發(fā)布時(shí)間:2023/12/4 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ML.NET 示例:将ML.NET模型导出到ONNX 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在這個(gè)示例中,您將看到如何使用ML.NET來(lái)訓(xùn)練回歸模型,然后將該模型轉(zhuǎn)換為ONNX格式。

問(wèn)題

開放式神經(jīng)網(wǎng)絡(luò)交換即ONNX是一種表示深度學(xué)習(xí)模型的開放格式。使用ONNX,開發(fā)人員可以在最先進(jìn)的工具之間移動(dòng)模型,并選擇最適合他們的組合。ONNX是由一個(gè)合作伙伴社區(qū)開發(fā)和支持的。

有時(shí)您可能希望使用ML.NET訓(xùn)練模型,然后轉(zhuǎn)換為ONNX,例如,如果您希望使用WinML使用模型以利用Windows應(yīng)用程序中的GPU推斷。

不是所有的ML.NET模型都可以轉(zhuǎn)換成ONNX;它依賴于訓(xùn)練器和訓(xùn)練管道中的變換。有關(guān)支持的訓(xùn)練器列表,請(qǐng)參見ML.NETAlgorithms Doc中的表格,有關(guān)支持的轉(zhuǎn)換的列表請(qǐng)查看Data transforms Doc。

數(shù)據(jù)集

本示例使用NYC出租車票價(jià)數(shù)據(jù)集。

解決方案

控制臺(tái)應(yīng)用程序項(xiàng)目ONNXExport 用于訓(xùn)練一個(gè)ML.NET模型,該模型根據(jù)行駛距離和乘客數(shù)量等特征預(yù)測(cè)出租車票價(jià),將該模型導(dǎo)出到ONNX,然后使用ONNX模型進(jìn)行預(yù)測(cè)。

NuGet包

要將ML.NET模型導(dǎo)出到ONNX,必須在項(xiàng)目中安裝以下NuGet包:

  • Microsoft.ML.OnnxConverter

您還必須安裝:

  • Microsoft.ML, 用于訓(xùn)練ML.NET模型

  • Microsoft.ML.ONNXRuntime和Microsoft.ML.OnnxTransformer,用于為ONNX模型評(píng)分

轉(zhuǎn)換和訓(xùn)練器

此管道包含以下轉(zhuǎn)換和訓(xùn)練器,它們都是ONNX可導(dǎo)出的:

  • OneHotEncoding 轉(zhuǎn)換

  • Concatenate 轉(zhuǎn)換

  • Light GBM 訓(xùn)練器

代碼

訓(xùn)練ML.NET模型后,可以使用以下代碼轉(zhuǎn)換為ONNX:

using?(var?stream?=?File.Create("taxi-fare-model.onnx"))mlContext.Model.ConvertToOnnx(model,?trainingDataView,?stream);

您需要一個(gè)轉(zhuǎn)換器和輸入數(shù)據(jù)來(lái)將ML.NET模型轉(zhuǎn)換為ONNX模型。默認(rèn)情況下,ONNX轉(zhuǎn)換將生成具有最新OpSet版本的ONNX文件

轉(zhuǎn)換為ONNX后,可以使用以下代碼使用ONNX模型:

var?onnxEstimator?=?mlContext.Transforms.ApplyOnnxModel(onnxModelPath);using?var?onnxTransformer?=?onnxEstimator.Fit(trainingDataView);var?onnxOutput?=?onnxTransformer.Transform(testDataView);

在同一個(gè)示例輸入上比較ML.NET模型和ONNX模型時(shí),應(yīng)該會(huì)得到相同的結(jié)果。如果運(yùn)行項(xiàng)目,則應(yīng)在控制臺(tái)中獲得類似于以下輸出的結(jié)果:

Predicted?Scores?with?ML.NET?model Score??????19.60645 Score??????18.673796 Score??????5.9175444 Score??????4.8969507 Score??????19.108932 Predicted?Scores?with?ONNX?model Score??????19.60645 Score??????18.673796 Score??????5.9175444 Score??????4.8969507 Score??????19.108932

性能

默認(rèn)的ONNX到ML.NET的轉(zhuǎn)換不是最佳的,并且會(huì)產(chǎn)生ML.NET使用不需要的額外圖形輸出。ONNX運(yùn)行時(shí)執(zhí)行反向深度優(yōu)先搜索,這會(huì)導(dǎo)致大量從ONNX運(yùn)行時(shí)到ML.NET的本機(jī)內(nèi)存到托管內(nèi)存的轉(zhuǎn)換操作,并執(zhí)行超過(guò)必要內(nèi)核的操作。

如果只指定必要的圖形輸出,它將只執(zhí)行圖形的一個(gè)子集。因此,通過(guò)消除除Score之外的所有圖形輸出,可以提高推理性能。

總結(jié)

以上是生活随笔為你收集整理的ML.NET 示例:将ML.NET模型导出到ONNX的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。