csharp通过onnx使用sklearn的模型
Posted lonelyrains
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp通过onnx使用sklearn的模型相关的知识,希望对你有一定的参考价值。
- 问题背景:
我们需要使用干净清爽的C#接口,来实现对Python的Scikit-Learn模型的调用,不对主机的安装包做任何修改。兼具易用性的同时,保持比较高性能的调用速度。
ONNX(Open Nerual Network Exchange)是一种跨不同语言和模型框架的通用工具。Tensorflow、Keras、Pytorch等等都有对应的onnx工具模块,Scikit-Learn也不例外。
用Scikit-Learn的原因,是对传统统计机器学习的模型调用非常方便,更适合针对纯数据的预测和分类。包括线性回归、随机森林、决策树、KNN等等。
- 最快使用:
基于搭建的示例工程,适配模型字段列表,直接引入onnx模型文件,进行调用。
- 环境搭建:
初始环境win10-x64/python3.7/pytorch1.1/sklearn
github下载sklearn-dotnet
pip install skl2onnx
下载模型数据,修改并运行sklearn-dotnet-master\\training\\train.py,生成onnx文件
Visual Studio新建c# console的工程,nuget添加Microsoft.ML / Microsoft.ML.OnnxRuntime的引用
添加vc2019 runtime库
使用文本编辑打开csproj文件
添加netstandard/System.Memory/System.Runtime.InteropServices.RuntimeInformation的引用,并把引用所对应的dll拷贝到exe路径。
- 常见错误:
cannot import name 'get_all_providers' from 'onnxruntime.capi._pybind_state'
datasets.fetch_california_housing 异常
….
各种常见错误的原因,基本就是库没引用到位或者没放在exe目录下
如果不能正常安装库,可能是网络限制,需要配置pip、conda的镜像、nuget等等
- 参考链接:
https://github.com/gnovack/sklearn-dotnet
https://s3-eu-west-1.amazonaws.com/pfigshare-u-files/5976036/cal_housing.tgz
https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
http://onnx.ai/sklearn-onnx/index.html
https://github.com/onnx
https://github.com/onnx/sklearn-onnx
https://github.com/microsoft/onnxruntime
The End of the World
以上是关于csharp通过onnx使用sklearn的模型的主要内容,如果未能解决你的问题,请参考以下文章