ML.NET中找不到ApplyOnnxModel方法的技术求助
问题描述
想要使用ML.NET加载ONNX模型,但发现MLContext.Transforms中没有ApplyOnnxModel方法。已安装的NuGet包如下:
<PackageReference Include="Microsoft.ML" Version="3.0.1" /> <PackageReference Include="Microsoft.ML.OnnxRuntime" Version="1.18.1" /> <PackageReference Include="Microsoft.ML.OnnxRuntime.Managed" Version="1.18.1" />
使用的代码:
using Microsoft.ML; MLContext mLContext = new MLContext(); mLContext.Transforms.ApplyOnnxModel(); Console.WriteLine("Hello, World!");
出现的错误信息:
'TransformsCatalog' 不包含 'ApplyOnnxModel' 的定义,也找不到可接受第一个参数为 'TransformsCatalog' 类型的可访问扩展方法 'ApplyOnnxModel'(是否缺少 using 指令或程序集引用?)
解决方案
- 安装缺失的NuGet包:
Microsoft.ML.OnnxTransformer,建议安装与Microsoft.ML版本匹配的版本(比如3.0.1),这个包包含了ApplyOnnxModel扩展方法的定义。 - 在代码中添加命名空间引用:
using Microsoft.ML.OnnxTransformer;,因为ApplyOnnxModel是该命名空间下的扩展方法,不添加的话编译器无法识别。 - 补充
ApplyOnnxModel的必要参数,比如ONNX模型文件路径、输入输出列的映射关系,示例修正后的代码如下:
using Microsoft.ML; using Microsoft.ML.OnnxTransformer; MLContext mLContext = new MLContext(); // 替换为你的模型实际列名和文件路径 var pipeline = mLContext.Transforms.ApplyOnnxModel( outputColumnNames: new[] { "output" }, inputColumnNames: new[] { "input" }, modelFile: "your_model.onnx"); Console.WriteLine("Hello, World!");
内容的提问来源于stack exchange,提问作者abbas-h
相关产品推荐
相关产品推荐

