ImageClassificationTrainer 类

定义

用于 IEstimator<TTransformer> 训练深度神经网络(DNN)对图像进行分类。

public sealed class ImageClassificationTrainer : Microsoft.ML.Trainers.TrainerEstimatorBase<Microsoft.ML.Data.MulticlassPredictionTransformer<Microsoft.ML.Vision.ImageClassificationModelParameters>,Microsoft.ML.Vision.ImageClassificationModelParameters>
type ImageClassificationTrainer = class
    inherit TrainerEstimatorBase<MulticlassPredictionTransformer<ImageClassificationModelParameters>, ImageClassificationModelParameters>
Public NotInheritable Class ImageClassificationTrainer
Inherits TrainerEstimatorBase(Of MulticlassPredictionTransformer(Of ImageClassificationModelParameters), ImageClassificationModelParameters)
继承

注解

若要创建此训练程序,请使用 ImageClassification

输入和输出列

输入标签列数据必须是 类型,特征列必须是可变大小的向量 Byte

该训练程序输出以下列:

输出列名称 列类型 Description
Score 向量Single 所有类的分数。较高的值表示属于关联类的概率较高。 如果 i-th 元素具有最大值,则预测的标签索引将是 i.注意 i 是从零开始的索引。
PredictedLabel 类型 预测标签的索引。 如果其值为 i,则实际标签将是键值输入标签类型中的第一个类别。

训练器特征

机器学习任务 多类分类
是否需要规范化?
是否需要缓存?
除 Microsoft.ML 之外所需的 NuGet Microsoft.ML.Vision 和 SciSharp.TensorFlow.Redist / SciSharp.TensorFlow.Redist-Windows-GPU / SciSharp.TensorFlow.Redist-Linux-GPU
可导出到 ONNX

使用基于 TensorFlow 的 API

若要运行任何基于 TensorFlow ML.Net API 的 API,必须先在 TensorFlow redist 库上添加 NuGet 依赖项。 目前可以使用两个版本。 一个是针对 GPU 支持编译的,一个仅支持 CPU。

仅限 CPU

当前支持基于 CPU 的 TensorFlow:

  • Linux
  • MacOS
  • Windows

若要使 TensorFlow 仅处理 CPU,只需在 SciSharp.TensorFlow.Redist v1.14.0 上获取 NuGet 依赖项

GPU 支持

当前支持基于 GPU 的 TensorFlow:

  • Windows
  • Linux 自现在起,TensorFlow 不支持在 MacOS 的 GPU 上运行,因此目前无法支持此功能。

先决条件

必须至少有一个 CUDA 兼容的 GPU,才能获得兼容 GPU 的列表,请参阅 Nvidia 的指南

安装 CUDA v10.1CUDNN v7.6.4

请确保安装 CUDA v10.1,而不是任何其他较新版本。 下载 CUDNN v7.6.4 .zip 文件并将其解压缩后,需要执行以下步骤:

copy <CUDNN_zip_files_path>\cuda\bin\cudnn64_7.dll to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin

对于 C/C++ 开发:

Copy <CUDNN_zip_files_path>\cuda\ include\cudnn.h to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include

Copy <CUDNN_zip_files_path>\cuda\lib\x64\cudnn.lib to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64

有关 cuDNN 的更多详细信息,可以按照 cuDNN 安装指南进行操作。

使用情况

若要将 TensorFlow 与 GPU 支持配合使用,需依赖以下包,具体取决于 OS:

  • Windows ->SciSharp.TensorFlow.Redist-Windows-GPU
  • Linux -> SciSharp.TensorFlow.Redist-Linux-GPU

无需修改代码即可利用 GPU 执行 TensorFlow 操作。

Troubleshooting

如果在添加基于 GPU 的 TensorFlow NuGet 后无法使用 GPU,请确保仅依赖于基于 GPU 的版本。 如果同时依赖于这两个 NuGet,则基于 CPU 的 TensorFlow 将改为运行。

训练算法详细信息

利用现有的预先训练的模型(例如 Resnet50)对图像进行分类来训练深度神经网络(DNN)。 该技术灵感来自 TensorFlow 的重新训练图像分类教程

字段

名称 说明
FeatureColumn

训练程序期望的功能列。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

训练程序期望的标签列。 可以是 null,指示标签不用于训练。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

训练器期望的权重列。 可以 null,指示权重不用于训练。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)

属性

名称 说明
Info

有关培训师的功能和要求的辅助信息。

方法

名称 说明
Finalize()

用于 IEstimator<TTransformer> 训练深度神经网络(DNN)对图像进行分类。

Fit(IDataView, IDataView)

使用训练和验证数据训练一个 ImageClassificationTrainer 返回一个 ImageClassificationModelParameters

Fit(IDataView)

火车并返回一个 ITransformer

(继承自 TrainerEstimatorBase<TTransformer,TModel>)
GetOutputSchema(SchemaShape)

用于 IEstimator<TTransformer> 训练深度神经网络(DNN)对图像进行分类。

(继承自 TrainerEstimatorBase<TTransformer,TModel>)

扩展方法

名称 说明
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

将“缓存检查点”追加到估算器链。 这将确保根据缓存的数据训练下游估算器。 在执行多个数据传递的训练器之前,拥有缓存检查点会很有帮助。

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

给定估算器后,返回一个包装对象,该对象将调用委托一次 Fit(IDataView) 。 估算器通常必须返回有关拟合情况的信息,这就是为什么 Fit(IDataView) 该方法返回特定类型化对象的原因,而不仅仅是常规 ITransformer对象。 但是,同时, IEstimator<TTransformer> 通常形成成包含许多对象的管道,因此我们可能需要通过 EstimatorChain<TLastTransformer> 估算器链来生成一个估算器链,而我们想要获取转换器的估算器被埋在此链中的某个位置。 对于这种情况,我们可以通过此方法附加一个委托,该委托将在调用拟合后调用。

适用于