ImageClassificationTrainer Classe

Définition

Pour IEstimator<TTransformer> entraîner un réseau neuronal profond (DNN) pour classifier des images.

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)
Héritage

Remarques

Pour créer ce formateur, utilisez ImageClassification.

Colonnes d’entrée et de sortie

Les données de colonne d’étiquette d’entrée doivent être de type clé et la colonne de caractéristique doit être un vecteur de taille variable de Byte.

Cet entraîneur génère les colonnes suivantes :

Nom de la colonne de sortie Type de colonne Description
Score Vecteur deSingle Scores de toutes les classes. Une valeur supérieure signifie une probabilité plus élevée de tomber dans la classe associée. Si l’i-ième élément a la plus grande valeur, l’index d’étiquette prédit est i.Notez que i est un index de base zéro.
PredictedLabel Type de clé Index de l’étiquette prédite. Si sa valeur est i, l’étiquette réelle est la i-ième catégorie dans le type d’étiquette d’entrée clé-valeur.

Caractéristiques de l’entraîneur

Tâche Machine Learning Classification multiclasse
La normalisation est-elle nécessaire ? Non
La mise en cache est-elle requise ? Non
NuGet requis en plus de Microsoft.ML Microsoft.ML.Vision et SciSharp.TensorFlow.Redist / SciSharp.TensorFlow.Redist-Windows-GPU / SciSharp.TensorFlow.Redist-Linux-GPU
Exportable vers ONNX Non

Utilisation des API basées sur TensorFlow

Pour exécuter toutes les API de ML.Net basées sur TensorFlow, vous devez d’abord ajouter une dépendance NuGet à la bibliothèque redist TensorFlow. Il existe actuellement deux versions que vous pouvez utiliser. Une qui est compilée pour la prise en charge du GPU et une prise en charge du processeur uniquement.

Processeur uniquement

TensorFlow basé sur le processeur est actuellement pris en charge sur :

  • Linux
  • MacOS
  • Windows

Pour que TensorFlow fonctionne sur le processeur uniquement tout ce qui est de prendre une dépendance NuGet sur SciSharp.TensorFlow.Redist v1.14.0

Prise en charge des GPU

TensorFlow basé sur GPU est actuellement pris en charge sur :

  • Windows
  • Linux À partir de maintenant, TensorFlow ne prend pas en charge l’exécution sur des GPU pour MacOS. Nous ne pouvons donc pas le prendre en charge actuellement.

Prerequisites

Vous devez disposer d’au moins un GPU compatible CUDA pour obtenir la liste des GPU compatibles, consultez le Guide de Nvidia.

Installez CUDA v10.1 et CUDNN v7.6.4.

Veillez à installer CUDA v10.1, pas une autre version plus récente. Après avoir téléchargé CUDNN v7.6.4 .zip fichier et décompressé, vous devez effectuer les étapes suivantes :

copy <CUDNN_zip_files_path>\cuda\bin\cudnn64_7.dll to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin

Pour le développement 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

Pour plus d’informations dans cuDNN, vous pouvez suivre le guide d’installation de cuDNN.

Usage

Pour utiliser TensorFlow avec prise en charge du GPU, prenez une dépendance NuGet sur le package suivant en fonction de votre système d’exploitation :

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

Aucune modification du code ne doit être nécessaire pour tirer parti du GPU pour les opérations TensorFlow.

Résolution des problèmes

Si vous n’êtes pas en mesure d’utiliser votre GPU après avoir ajouté le nuGet TensorFlow basé sur GPU, assurez-vous qu’il n’existe qu’une dépendance sur la version basée sur GPU. Si vous avez une dépendance sur les deux NuGets, le TensorFlow basé sur l’UC s’exécute à la place.

Détails de l’algorithme d’apprentissage

Effectue l’apprentissage d’un réseau neuronal profond (DNN) en tirant parti d’un modèle préentraîné existant tel que Resnet50 à des fins de classification d’images. La technique a été inspirée du didacticiel de classification d’images réentraînée de TensorFlow

Champs

Nom Description
FeatureColumn

Colonne de fonctionnalités attendue par l’entraîneur.

(Hérité de TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

Colonne d’étiquette attendue par l’entraîneur. Peut être null, ce qui indique que l’étiquette n’est pas utilisée pour l’entraînement.

(Hérité de TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

Colonne de poids attendue par l’entraîneur. Peut être null, ce qui indique que le poids n’est pas utilisé pour l’entraînement.

(Hérité de TrainerEstimatorBase<TTransformer,TModel>)

Propriétés

Nom Description
Info

Informations auxiliaires sur le formateur en termes de capacités et d’exigences.

Méthodes

Nom Description
Finalize()

Pour IEstimator<TTransformer> entraîner un réseau neuronal profond (DNN) pour classifier des images.

Fit(IDataView, IDataView)

Effectue l’apprentissage à ImageClassificationTrainer l’aide de données d’entraînement et de validation, retourne un ImageClassificationModelParameters.

Fit(IDataView)

Effectue l’apprentissage et retourne un ITransformer.

(Hérité de TrainerEstimatorBase<TTransformer,TModel>)
GetOutputSchema(SchemaShape)

Pour IEstimator<TTransformer> entraîner un réseau neuronal profond (DNN) pour classifier des images.

(Hérité de TrainerEstimatorBase<TTransformer,TModel>)

Méthodes d’extension

Nom Description
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

Ajoutez un « point de contrôle de mise en cache » à la chaîne d’estimateur. Cela garantit que les estimateurs en aval seront entraînés par rapport aux données mises en cache. Il est utile d’avoir un point de contrôle de mise en cache avant les formateurs qui prennent plusieurs passes de données.

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

En fonction d’un estimateur, retournez un objet de création de package de restrictions qui appellera un délégué une fois Fit(IDataView) appelé. Il est souvent important pour un estimateur de retourner des informations sur ce qui était adapté, c’est pourquoi la Fit(IDataView) méthode retourne un objet spécifiquement typé, plutôt que simplement un général ITransformer. Toutefois, en même temps, IEstimator<TTransformer> sont souvent formés en pipelines avec de nombreux objets, nous devrons peut-être construire une chaîne d’estimateurs via EstimatorChain<TLastTransformer> laquelle l’estimateur pour lequel nous voulons obtenir le transformateur est enterré quelque part dans cette chaîne. Pour ce scénario, nous pouvons par le biais de cette méthode attacher un délégué qui sera appelé une fois l’ajustement appelé.

S’applique à