Поделиться через


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

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

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

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

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

только ЦП.

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

  • Linux
  • MacOS
  • Windows

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

Поддержка GPU

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

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

Предварительные требования

Для списка совместимых gpu с gpu, совместимых с CUDA, см. руководство 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

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

Устранение неполадок

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

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