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)
- Наследование
-
TrainerEstimatorBase<MulticlassPredictionTransformer<ImageClassificationModelParameters>,ImageClassificationModelParameters>ImageClassificationTrainer
Комментарии
Чтобы создать этот обучающий средство, используйте 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 |
Столбец метки, который ожидает тренер. Может быть |
| 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> того, где оценка, для которой мы хотим получить преобразователь, похоронен где-то в этой цепочке. В этом сценарии мы можем подключить делегат, который будет вызываться после вызова. |