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 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 |
| WeightColumn |
Colonna di peso prevista dal formatore. Può essere |
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. |