OnnxScoringEstimator 类

定义

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)
继承
OnnxScoringEstimator

注解

估算器特征

此估算器是否需要查看数据来训练其参数?
输入列数据类型 已知大小的矢量 SingleDouble 类型
输出列数据类型 由 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 的 GPUCUDA 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> 估算器链生成一个估算器链,以便将转换器埋在此链中的某个位置。 对于该方案,我们可以通过此方法附加一个委托,该委托将在调用拟合后调用。

适用于