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。
该训练程序输出以下列:
| 输出列名称 | 列类型 | 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.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:
- 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 |
训练程序期望的标签列。 可以是 |
| WeightColumn |
训练器期望的权重列。 可以 |
属性
| 名称 | 说明 |
|---|---|
| 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> 估算器链来生成一个估算器链,而我们想要获取转换器的估算器被埋在此链中的某个位置。 对于这种情况,我们可以通过此方法附加一个委托,该委托将在调用拟合后调用。 |