OnnxScoringEstimator 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
IEstimator<TTransformer> 用于评分 ML.NET 框架中的 ONNX 模型。
public sealed class OnnxScoringEstimator : Microsoft.ML.Data.TrivialEstimator<Microsoft.ML.Transforms.Onnx.OnnxTransformer>
type OnnxScoringEstimator = class
inherit TrivialEstimator<OnnxTransformer>
Public NotInheritable Class OnnxScoringEstimator
Inherits TrivialEstimator(Of OnnxTransformer)
- 继承
注解
估算器特征
此估算器是否需要查看数据来训练其参数? | 否 |
输入列数据类型 | 已知大小的矢量 Single 或 Double 类型 |
输出列数据类型 | 由 ONNX 模型指定 |
除 Microsoft.ML 以外,还需要 NuGet | Microsoft.ML.OnnxTransformer (始终) ,例如 Microsoft.ML.OnnxRuntime 1.6.0 (,用于 CPU 处理) 或 Microsoft.ML.OnnxRuntime.Gpu 1.6.0 ((如果 GPU 可用) |
可导出到 ONNX | 否 |
若要创建此估算器,请使用以下 API: ApplyOnnxModel
支持使用 Microsoft.ML.OnnxRuntime 库推断 ONNX 1.6 格式的模型 (opset 11) 。 如果项目引用 Microsoft.ML.OnnxRuntime,如果项目引用 Microsoft.ML.OnnxRuntime.Gpu,则模型在 CPU 上评分。 使用 OnnxScoringEstimator 的每个项目都必须引用上述两个包之一。
若要在 GPU 上运行,请使用 NuGet 包 Microsoft.ML.OnnxRuntime.Gpu 而不是 Microsoft.ML.OnnxRuntime nuget (,用于 CPU 处理) 。 Microsoft.ML.OnnxRuntime.Gpu 需要 支持 CUDA 的 GPU、 CUDA 10.2 工具包和 cuDNN 8.0.3 (,如 Onnxruntime 文档) 所示。 通过 ApplyOnnxModel 创建估算器时,将参数“gpuDeviceId”设置为有效的非负整数。 典型的设备 ID 值为 0 或 1。 如果未找到 GPU 设备,但“fallbackToCpu = true”,则估算器将在 CPU 上运行。 如果未找到 GPU 设备,但“fallbackToCpu = false”,则估算器将引发异常
ONNX 模型的输入和输出必须是 Tensor 类型。 尚不支持序列和地图。
在内部,OnnxTransformer (OnnxScoringEstimator.Fit () ) 的返回值保留对推理会话的引用,该会话指向OnnxRuntime.dll拥有的非托管内存。 每当管道中有 对 ApplyOnnxModel 的调用时,建议将 Fit () 调用的返回值强制转换为 IDisposable 并调用 Dispose () ,以确保没有内存泄漏。
OnnxRuntime 适用于 Windows、MacOS 和 Ubuntu 16.04 Linux 64 位平台。 请访问 ONNX 模型 ,查看随时可用的模型列表以开始使用。 有关详细信息,请参阅 ONNX 。
方法
Fit(IDataView) |
IEstimator<TTransformer> 用于评分 ML.NET 框架中的 ONNX 模型。 (继承自 TrivialEstimator<TTransformer>) |
GetOutputSchema(SchemaShape) |
返回 SchemaShape 由转换器生成的架构。 用于管道中的架构传播和验证。 |
扩展方法
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
将“缓存检查点”追加到估算器链。 这将确保根据缓存的数据训练下游估算器。 在执行多个数据传递的训练器之前,拥有缓存检查点会很有帮助。 |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
给定估算器后,返回一个包装对象,该对象将调用委托一次 Fit(IDataView) 。 估算器通常必须返回有关适合的内容的信息,这就是为什么 Fit(IDataView) 该方法返回特定类型化对象的原因,而不仅仅是常规 ITransformer对象。 但是,同时, IEstimator<TTransformer> 通常形成为包含许多对象的管道,因此,我们可能需要通过 EstimatorChain<TLastTransformer> 估算器链生成一个估算器链,以便将转换器埋在此链中的某个位置。 对于该方案,我们可以通过此方法附加一个委托,该委托将在调用拟合后调用。 |