ImageClassificationTrainer Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
-
TrainerEstimatorBase<MulticlassPredictionTransformer<ImageClassificationModelParameters>,ImageClassificationModelParameters>ImageClassificationTrainer
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 |
WeightColumn |
Colonne de poids attendue par l’entraîneur. Peut être |
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, IDataView) |
Effectue l’apprentissage à ImageClassificationTrainer l’aide de données d’entraînement et de validation, retourne un ImageClassificationModelParameters. |
Fit(IDataView) |
Entraîne 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 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é. |