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, фактическая метка будет категорией i-th в типе входной метки с ключевым значением.

Характеристики тренера

Задача машинного обучения Многоклассовая классификация
Требуется ли нормализация? No
Требуется ли кэширование? No
Обязательный NuGet в дополнение к Microsoft.ML Microsoft.ML.Vision и SciSharp.TensorFlow.Redist / SciSharp.TensorFlow.Redist-Windows-GPU / SciSharp.TensorFlow.Redist-Linux-GPU
Экспортируемый в ONNX No

Использование API на основе TensorFlow

Чтобы запустить все API-интерфейсы TensorFlow ML.Net на основе tensorFlow, необходимо сначала добавить зависимость NuGet от библиотеки Redist TensorFlow. В настоящее время можно использовать две версии. Один из которых компилируется для поддержки GPU и имеет только поддержку ЦП.

Только ЦП

В настоящее время в TensorFlow на основе ЦП поддерживается:

  • Linux
  • MacOS
  • Windows

Чтобы получить TensorFlow, работающий на ЦП только все, что требуется для получения зависимости NuGet от SciSharp.TensorFlow.Redist версии 1.14.0

Поддержка GPU

На основе GPU TensorFlow в настоящее время поддерживается:

  • Windows
  • Linux По состоянию на данный момент TensorFlow не поддерживает работу на GPU для MacOS, поэтому сейчас мы не можем поддерживать эту функцию.

Необходимые условия

У вас должен быть по крайней мере один совместимый GPU CUDA, чтобы получить список совместимых GPU см. в руководстве Nvidia.

Установите CUDA версии 10.1 и CUDNN версии 7.6.4.

Установите CUDA версии 10.1, а не другую более новую версию. После скачивания CUDNN версии 7.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, выполните зависимость NuGet от следующего пакета в зависимости от операционной системы:

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

Для операций TensorFlow не требуется никаких изменений кода.

Troubleshooting

Если вы не сможете использовать GPU после добавления NuGet на основе GPU TensorFlow, убедитесь, что существует только зависимость от версии на основе GPU. Если у вас есть зависимость от NuGet, вместо этого будет выполняться ЦП на основе TensorFlow.

Сведения об алгоритме обучения

Обучает глубокую нейронную сеть (DNN), используя существующую предварительно обученную модель, например Resnet50 для классификации изображений. Метод был вдохновлен руководством по переобучение изображений 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> того, где оценка, для которой мы хотим получить преобразователь, похоронен где-то в этой цепочке. В этом сценарии мы можем подключить делегат, который будет вызываться после вызова.

Применяется к