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

该训练程序输出以下列:

输出列名称 列名称 说明
Score 向量Single 所有类的分数。值越高意味着落入相关类的概率越高。 如果第 i 个元素具有最大值,则预测的标签索引为 i。请注意,i 是从零开始的索引。
PredictedLabel key 类型 预测标签的索引。 如果其值为 i,则实际标签为键值输入标签类型中的第 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 上运行,因此目前我们不支持此功能。

先决条件

对于兼容 GPU 的列表,必须至少有一个 CUDA 兼容 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 对以下包使用 NuGet 依赖项:

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

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

故障排除

如果在添加基于 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)

火车并返回一个 ITransformer

(继承自 TrainerEstimatorBase<TTransformer,TModel>)
Fit(IDataView, IDataView)

ImageClassificationTrainer使用训练和验证数据训练返回 aImageClassificationModelParameters.

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> 估算器链生成一个估算器链,以便将转换器埋在此链中的某个位置。 对于该方案,我们可以通过此方法附加一个委托,该委托将在调用拟合后调用。

适用于