ImageClassificationTrainer Classe

Definizione

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à

Commenti

Per creare questo formatore, usare ImageClassification.

Colonne di input e output

I dati della colonna dell'etichetta di input devono essere di tipo chiave e la colonna della funzionalità deve essere un vettore di dimensioni variabili di Byte.

Questo formatore restituisce le colonne seguenti:

Nome della colonna di output Tipo di colonna Descrizione
Score Vettore diSingle Punteggi di tutte le classi. Un valore più alto indica una maggiore probabilità di rientrare nella classe associata. Se l'elemento i-th ha il valore più grande, l'indice delle etichette stimato sarà ovvero l'indice in base zero.
PredictedLabel chiave tipo Indice dell'etichetta stimata. Se il valore è i, l'etichetta effettiva sarà la categoria i-th nel tipo di etichetta di input con valori chiave.

Caratteristiche del trainer

Attività di Machine Learning Classificazione multiclasse
La normalizzazione è necessaria? No
La memorizzazione nella cache è necessaria? No
NuGet necessario 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 su TensorFlow ML.Net, è 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 GPU e una che include solo il supporto della CPU.

Solo CPU

TensorFlow basato sulla CPU è attualmente supportato in:

  • Linux
  • MacOS
  • Windows

Per fare in modo che TensorFlow funzioni solo sulla CPU, tutto ciò che consiste nell'accettare 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 è attualmente possibile supportare questo.

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 la procedura seguente:

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 in 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 altri dettagli in cuDNN, è possibile seguire la guida all'installazione di cuDNN.

Utilizzo

Per usare TensorFlow con il supporto 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

Non è necessario modificare il codice per sfruttare la GPU per le operazioni TensorFlow.

Troubleshooting

Se non è possibile usare la GPU dopo l'aggiunta di TensorFlow NuGet basato su GPU, assicurarsi che esista solo una dipendenza dalla versione basata su GPU. Se si ha una dipendenza da entrambi i NuGet, verrà invece eseguito TensorFlow basato sulla CPU.

Dettagli algoritmo di training

Esegue il training di una rete neurale profonda sfruttando un modello con training preliminare esistente, ad esempio Resnet50, allo scopo di classificare le immagini. La tecnica è stata ispirata dall'esercitazione sulla ripetizione del training delle immagini di TensorFlow

Campi

Nome Descrizione
FeatureColumn

Colonna di funzionalità prevista dal formatore.

(Ereditato da TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

Colonna etichetta prevista dal formatore. Può essere null, che indica che l'etichetta non viene usata per il training.

(Ereditato da TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

Colonna di peso prevista dal formatore. Può essere null, che indica che il peso non viene usato per il training.

(Ereditato da TrainerEstimatorBase<TTransformer,TModel>)

Proprietà

Nome Descrizione
Info

Informazioni ausiliarie sul formatore in termini di capacità e requisiti.

Metodi

Nome Descrizione
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 ImageClassificationTrainer oggetto usando sia i dati di training che di convalida, restituisce un oggetto ImageClassificationModelParameters.

Fit(IDataView)

Esegue il training e restituisce un oggetto ITransformer.

(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

Nome Descrizione
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

Aggiungere un "checkpoint di memorizzazione nella cache" alla catena di stima. In questo modo si garantisce che gli estimatori downstream vengano sottoposti a training su dati memorizzati nella cache. È utile disporre di un checkpoint di memorizzazione nella cache prima che i formatori eseseguono più passaggi di dati.

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

Dato uno strumento di stima, restituire un oggetto wrapping che chiamerà un delegato una volta Fit(IDataView) chiamato. È spesso importante che uno strumento di stima restituisca informazioni sulle dimensioni, 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> vengono spesso formati in pipeline con molti oggetti, quindi potrebbe essere necessario creare una catena di estimatori tramite EstimatorChain<TLastTransformer> dove lo strumento di stima per il quale si vuole ottenere il trasformatore è sepolto in una posizione in questa catena. Per questo scenario, è possibile collegare un delegato che verrà chiamato una volta chiamato fit.

Si applica a