ImageClassificationTrainer Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Oggetto IEstimator<TTransformer> per il training di una rete neurale profonda (DNN) per classificare le immagini.
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)
- Ereditarietà
-
TrainerEstimatorBase<MulticlassPredictionTransformer<ImageClassificationModelParameters>,ImageClassificationModelParameters>ImageClassificationTrainer
Commenti
Per creare questo trainer, usare ImageClassification.
Colonne di input e output
I dati della colonna dell'etichetta di input devono essere di tipo chiave e la colonna di funzionalità deve essere un vettore di dimensioni variabili di Byte.
Questo formatore restituisce le colonne seguenti:
Nome colonna di output | Tipo di colonna | Descrizione |
---|---|---|
Score |
Vettore diSingle | Punteggi di tutte le classi. Un valore superiore indica una maggiore probabilità di cadere nella classe associata. Se l'elemento i-th ha il valore più grande, l'indice dell'etichetta stimata sarebbe i.Nota che i è indice in base zero. |
PredictedLabel |
tipo di chiave | L'indice dell'etichetta stimata. Se il valore è i, l'etichetta effettiva potrebbe essere la categoria i-esima nel tipo di etichetta di input con valori key. |
Caratteristiche del trainer
Attività di Machine Learning | Classificazione multiclasse |
È necessaria la normalizzazione? | No |
È necessaria la memorizzazione nella cache? | No |
NuGet richiesto oltre a Microsoft.ML | Microsoft.ML.Vision e SciSharp.TensorFlow.Redist/ SciSharp.TensorFlow.Redist-Windows-GPU / SciSharp.TensorFlow.Redist-Linux-GPU |
Esportabile in ONNX | No |
Uso delle API basate su TensorFlow
Per eseguire qualsiasi API basata ML.Net su TensorFlow, è prima necessario aggiungere una dipendenza NuGet dalla libreria redist TensorFlow. Attualmente sono disponibili due versioni che è possibile usare. Una che viene compilata per il supporto della GPU e una che include solo il supporto della CPU.
Solo CPU
TensorFlow basato sulla CPU è attualmente supportato in:
- Linux
- MacOS
- Windows
Per ottenere l'uso di TensorFlow sulla CPU solo per eseguire una dipendenza NuGet da SciSharp.TensorFlow.Redist v1.14.0
Supporto GPU
TensorFlow basato su GPU è attualmente supportato in:
- Windows
- Linux A partire da ora TensorFlow non supporta l'esecuzione su GPU per MacOS, quindi non è possibile supportare attualmente questa operazione.
Prerequisiti
Per un elenco di GPU compatibili con Nvidia, è necessario avere almeno una GPU compatibile con CUDA.
Installare CUDA v10.1 e CUDNN v7.6.4.
Assicurarsi di installare CUDA v10.1, non altre versioni più recenti. Dopo aver scaricato CUDNN v7.6.4 .zip file e decomprimerlo, è necessario eseguire questa procedura:
copy <CUDNN_zip_files_path>\cuda\bin\cudnn64_7.dll to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
Per lo sviluppo 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
Per ulteriori dettagli in cuDNN, è possibile seguire la guida all'installazione cuDNN.
Utilizzo
Per usare TensorFlow con il supporto della GPU, prendere una dipendenza NuGet dal pacchetto seguente a seconda del sistema operativo:
- Windows -> SciSharp.TensorFlow.Redist-Windows-GPU
- Linux -> SciSharp.TensorFlow.Redist-Linux-GPU
Nessuna modifica del codice deve essere necessaria per sfruttare la GPU per le operazioni TensorFlow.
Risoluzione dei problemi
Se la GPU non è in grado di usare la GPU dopo aver aggiunto TensorFlow NuGet basato su GPU, assicurarsi che sia presente solo una dipendenza dalla versione basata sulla GPU. Se si ha una dipendenza da entrambi i NuGet, la CPU basata su TensorFlow verrà invece eseguita.
Dettagli dell'algoritmo di training
Esegue il training di una rete neurale profonda (DNN) sfruttando un modello pre-sottoposto a training esistente, ad esempio Resnet50, allo scopo di classificare le immagini. La tecnica è stata ispirata dall'esercitazione sulla classificazione delle immagini di training di TensorFlow
Campi
FeatureColumn |
Colonna di funzionalità prevista dal trainer. (Ereditato da TrainerEstimatorBase<TTransformer,TModel>) |
LabelColumn |
Colonna etichetta prevista dal trainer. Può essere |
WeightColumn |
Colonna di peso prevista dal trainer. Può essere |
Proprietà
Info |
Informazioni ausiliarie sul formatore in termini di capacità e requisiti. |
Metodi
Finalize() |
Oggetto IEstimator<TTransformer> per il training di una rete neurale profonda (DNN) per classificare le immagini. |
Fit(IDataView, IDataView) |
Esegue il training di un oggetto ImageClassificationTrainer usando i dati di training e di convalida, restituisce un ImageClassificationModelParametersoggetto . |
Fit(IDataView) |
Esegue il training e restituisce un ITransformeroggetto . (Ereditato da TrainerEstimatorBase<TTransformer,TModel>) |
GetOutputSchema(SchemaShape) |
Oggetto IEstimator<TTransformer> per il training di una rete neurale profonda (DNN) per classificare le immagini. (Ereditato da TrainerEstimatorBase<TTransformer,TModel>) |
Metodi di estensione
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Aggiungere un "checkpoint di memorizzazione nella cache" alla catena di stima. Ciò garantisce che gli estimatori downstream vengano sottoposti a training sui dati memorizzati nella cache. È utile avere un checkpoint di memorizzazione nella cache prima dei training che accettano più passaggi di dati. |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
Dato un stimatore, restituire un oggetto wrapping che chiamerà un delegato una volta Fit(IDataView) chiamato. Spesso è importante che un stimatore restituisca informazioni su ciò che è stato adatto, che è il motivo per cui il Fit(IDataView) metodo restituisce un oggetto tipizzato in modo specifico, anziché solo un oggetto generale ITransformer. Tuttavia, allo stesso tempo, IEstimator<TTransformer> sono spesso formati in pipeline con molti oggetti, quindi potrebbe essere necessario creare una catena di stima tramite EstimatorChain<TLastTransformer> dove lo stimatore per cui si vuole ottenere il trasformatore è sepolto da qualche parte in questa catena. Per questo scenario, è possibile collegare questo metodo a un delegato che verrà chiamato una volta chiamato fit. |