Share via


ImageClassificationTrainer Classe

Définition

Pour IEstimator<TTransformer> entraîner un réseau neuronal profond (DNN) pour classifier les 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.

Ce formateur génère les colonnes suivantes :

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

Caractéristiques de l’entraîneur

Tâche d’apprentissage automatique Classification multiclasse
La normalisation est-elle requise ? 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 TensorFlow basées sur ML.Net, vous devez d’abord ajouter une dépendance NuGet à la bibliothèque redist TensorFlow. Il existe actuellement deux versions que vous pouvez utiliser. Qui est compilé pour la prise en charge gpu, et qui a uniquement la prise en charge du processeur.

UC 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 consiste à prendre une dépendance NuGet sur SciSharp.TensorFlow.Redist v1.14.0

Prise en charge GPU

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

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

Prérequis

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.

Assurez-vous d’installer CUDA v10.1, pas d’autre version plus récente. Après avoir téléchargé cuDNN v7.6.4 .zip fichier et décompressez-le, 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.

Utilisation

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 de code ne doit être nécessaire pour tirer parti du GPU pour les opérations TensorFlow.

Dépannage

Si vous n’êtes pas en mesure d’utiliser votre GPU après avoir ajouté le TensorFlow NuGet 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 le processeur 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 de réentraînement de TensorFlow

Champs

FeatureColumn

Colonne de caractéristique attendue par l’entraîneur.

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

Colonne d’étiquette attendue par le formateur. 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

Info

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

Méthodes

Finalize()

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

Fit(IDataView)

Entraîne et retourne un ITransformer.

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

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

GetOutputSchema(SchemaShape)

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

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

Méthodes d’extension

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>)

Étant donné un estimateur, retournez un objet de création de package de package 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 a été 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 pouvons donc avoir besoin de créer 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 à