ImageClassificationTrainer Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Für IEstimator<TTransformer> die Schulung eines Deep Neural Network(DNN) zum Klassifizieren von Bildern.
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)
- Vererbung
-
TrainerEstimatorBase<MulticlassPredictionTransformer<ImageClassificationModelParameters>,ImageClassificationModelParameters>ImageClassificationTrainer
Hinweise
Um diesen Trainer zu erstellen, verwenden Sie ImageClassification.
Eingabe- und Ausgabespalten
Die Eingabebeschriftungsspaltendaten müssen schlüsseltyp sein, und die Featurespalte muss ein variablen Vektor sein Byte.
Der Trainer gibt folgende Spalten aus:
Name der Ausgabespalte | Spaltentyp | BESCHREIBUNG |
---|---|---|
Score |
Vektor vonSingle | Die Bewertungen aller Klassen. Ein höherer Wert bedeutet eine höhere Wahrscheinlichkeit, in die zugehörige Klasse zu fallen. Wenn das i-te Element den größten Wert hat, wäre der vorhergesagte Bezeichnungsindex i. Beachten Sie, dass „i“ ein nullbasierter Index ist. |
PredictedLabel |
Typ key | Der Index der vorhergesagten Bezeichnung. Wenn sein Wert i ist, wäre die eigentliche Bezeichnung die i-te Kategorie des Typs der Schlüssel-Wert-Eingabebezeichnung. |
Trainereigenschaften
ML-Aufgabe | Multiklassenklassifizierung |
Ist die Normalisierung erforderlich? | No |
Ist zwischenspeichern erforderlich? | No |
Erforderliche NuGet zusätzlich zu Microsoft.ML | Microsoft.ML.Vision und SciSharp.TensorFlow.Redist / SciSharp.TensorFlow.Redist-Windows-GPU / SciSharp.TensorFlow.Redist-Linux-GPU |
Exportierbar in ONNX | No |
Verwenden von TensorFlow-basierten APIs
Um alle TensorFlow-basierten ML.Net-APIs auszuführen, müssen Sie zuerst eine NuGet-Abhängigkeit von der TensorFlow-Redist-Bibliothek hinzufügen. Derzeit gibt es zwei Versionen, die Sie verwenden können. Eine, die für die GPU-Unterstützung kompiliert wird, und eine, die nur CPU-Unterstützung enthält.
Nur CPU
CPU-basiertes TensorFlow wird derzeit unterstützt:
- Linux
- MacOS
- Windows
Um TensorFlow nur auf der CPU zu verwenden, die eine NuGet-Abhängigkeit von SciSharp.TensorFlow.Redist v1.14.0 übernehmen soll
GPU-Unterstützung
GPU-basierte TensorFlow wird derzeit unterstützt:
- Windows
- Linux As of now TensorFlow unterstützt nicht die Ausführung auf GPUs für MacOS, sodass wir dies derzeit nicht unterstützen können.
Voraussetzungen
Sie müssen mindestens eine CUDA-kompatible GPU haben, eine Liste kompatibler GPUs finden Sie in der Anleitung von Nvidia.
Installieren Sie CUDA v10.1 und CUDNN v7.6.4.
Stellen Sie sicher, dass Sie CUDA 10.1 installieren – keine neuere Version. Nach dem Herunterladen von CUDNN v7.6.4 .zip Datei und dem Entpacken müssen Sie die folgenden Schritte ausführen:
copy <CUDNN_zip_files_path>\cuda\bin\cudnn64_7.dll to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
Für die C/C++-Entwicklung:
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
Weitere Details in cuDNN können Sie dem CuDNN-Installationshandbuch folgen.
Verbrauch
Um TensorFlow mit GPU-Unterstützung zu verwenden, nehmen Sie je nach Betriebssystem eine NuGet-Abhängigkeit von dem folgenden Paket ab:
- Windows -> SciSharp.TensorFlow.Redist-Windows-GPU
- Linux -> SciSharp.TensorFlow.Redist-Linux-GPU
Es sollte keine Codeänderung erforderlich sein, um die GPU für TensorFlow-Vorgänge zu nutzen.
Problembehandlung
Wenn Sie Ihre GPU nach dem Hinzufügen der GPU basierenden TensorFlow NuGet nicht verwenden können, stellen Sie sicher, dass nur eine Abhängigkeit von der gpubasierten Version vorhanden ist. Wenn Sie eine Abhängigkeit von beiden NuGets haben, wird stattdessen die CPU basierende TensorFlow ausgeführt.
Schulungsalgorithmusdetails
Trainiert ein Deep Neural Network(DNN), indem ein vorhandenes vorab trainiertes Modell wie Resnet50 zum Zweck der Klassifizierung von Bildern genutzt wird. Die Technik wurde von TensorFlows Retrain-Bildklassifizierungs-Lernprogramm inspiriert.
Felder
FeatureColumn |
Die Featurespalte, die der Trainer erwartet. (Geerbt von TrainerEstimatorBase<TTransformer,TModel>) |
LabelColumn |
Die Bezeichnungsspalte, die der Trainer erwartet. Kann sein |
WeightColumn |
Die Gewichtsspalte, die der Trainer erwartet.
|
Eigenschaften
Info |
Hilfsinformationen über den Trainer in Bezug auf seine Fähigkeiten und Anforderungen. |
Methoden
Finalize() |
Für IEstimator<TTransformer> die Schulung eines Deep Neural Network(DNN) zum Klassifizieren von Bildern. |
Fit(IDataView, IDataView) |
Ruft eine ImageClassificationTrainer Verwendung von Schulungs- und Validierungsdaten ab, gibt einen ImageClassificationModelParametersWert zurück. |
Fit(IDataView) |
Züge und zurückgeben eine ITransformer. (Geerbt von TrainerEstimatorBase<TTransformer,TModel>) |
GetOutputSchema(SchemaShape) |
Für IEstimator<TTransformer> die Schulung eines Deep Neural Network(DNN) zum Klassifizieren von Bildern. (Geerbt von TrainerEstimatorBase<TTransformer,TModel>) |
Erweiterungsmethoden
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Fügen Sie einen "Zwischenspeicherpunkt" an die Stimatorkette an. Dadurch wird sichergestellt, dass die nachgelagerten Stimatoren gegen zwischengespeicherte Daten trainiert werden. Es ist hilfreich, einen Cache-Prüfpunkt zu haben, bevor Trainer, die mehrere Daten übergeben. |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
Geben Sie aufgrund einer Schätzung ein Umbruchobjekt zurück, das einen Stellvertretung aufruft, sobald Fit(IDataView) er aufgerufen wird. Es ist oft wichtig, dass eine Schätzung Informationen zu dem zurückgibt, was passt, weshalb die Fit(IDataView) Methode ein spezifisches typiertes Objekt zurückgibt, anstatt nur ein allgemeines ITransformer. Gleichzeitig IEstimator<TTransformer> werden jedoch oft Pipelines mit vielen Objekten gebildet, sodass wir möglicherweise eine Kette von EstimatorChain<TLastTransformer> Schätzern erstellen müssen, über die der Schätzer, für den wir den Transformator erhalten möchten, irgendwo in dieser Kette begraben wird. Für dieses Szenario können wir über diese Methode eine Stellvertretung anfügen, die einmal aufgerufen wird, wenn die Anpassung aufgerufen wird. |