ImageClassificationTrainer 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用于 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)
- 继承
-
TrainerEstimatorBase<MulticlassPredictionTransformer<ImageClassificationModelParameters>,ImageClassificationModelParameters>ImageClassificationTrainer
注解
若要创建此训练器,请使用 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.1 和 CUDNN 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 |
训练器期望的标签列。 可以 |
WeightColumn |
训练器期望的权重列。 可以 |
属性
Info |
有关培训师的功能和要求的辅助信息。 |
方法
Finalize() |
用于 IEstimator<TTransformer> 训练深度神经网络 (DNN) 对图像进行分类。 |
Fit(IDataView, IDataView) |
ImageClassificationTrainer使用训练和验证数据训练返回 aImageClassificationModelParameters. |
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> 估算器链生成一个估算器链,以便将转换器埋在此链中的某个位置。 对于该方案,我们可以通过此方法附加一个委托,该委托将在调用拟合后调用。 |