Share via


ImageClassificationTrainer Klasse

Definition

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

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 null, was angibt, dass die Bezeichnung nicht für Schulungen verwendet wird.

(Geerbt von TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

Die Gewichtsspalte, die der Trainer erwartet. nullKann sein, was angibt, dass das Gewicht nicht für die Schulung verwendet wird.

(Geerbt von TrainerEstimatorBase<TTransformer,TModel>)

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)

Züge und zurückgeben eine ITransformer.

(Geerbt von TrainerEstimatorBase<TTransformer,TModel>)
Fit(IDataView, IDataView)

Ruft eine ImageClassificationTrainer Verwendung von Schulungs- und Validierungsdaten ab, gibt einen ImageClassificationModelParametersWert zurück.

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.

Gilt für: