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