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.
Zum IEstimator<TTransformer> Training 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
Verwenden Sie ImageClassification, um diesen Trainer zu erstellen.
Eingabe- und Ausgabespalten
Die Spaltendaten der Eingabebeschriftung müssen schlüsseltyp sein, und die Featurespalte muss ein Vektor Bytemit variabler Größe sein.
Der Trainer gibt folgende Spalten aus:
| Name der Ausgabespalte | Spaltentyp | Description |
|---|---|---|
Score |
Vektor vonSingle | Die Bewertungen aller Klassen. Höherer Wert bedeutet eine höhere Wahrscheinlichkeit, in die zugeordnete Klasse zu fallen. Wenn das i-th-Element den größten Wert aufweist, lautet der vorhergesagte Bezeichnungsindex i.Note that i is zero-based index. |
PredictedLabel |
Schlüssel-Typ | Der Index der vorhergesagten Bezeichnung. Wenn der Wert i ist, würde die tatsächliche Beschriftung die i-th-Kategorie im Eingabebezeichnungstyp mit Schlüsselwert sein. |
Trainermerkmale
| Machine Learning-Aufgabe | Mehrklassenklassifizierung |
| Ist normalisierung erforderlich? | No |
| Ist zwischenspeichern erforderlich? | No |
| Erforderliches 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. Es gibt derzeit zwei Versionen, die Sie verwenden können. Eine, die für die GPU-Unterstützung kompiliert wird und eine, die nur CPU-Unterstützung hat.
Nur CPU
CPU-basierter TensorFlow wird derzeit unter:
- Linux
- MacOS
- Windows
Um TensorFlow nur für die CPU zu verwenden, die eine NuGet-Abhängigkeit von SciSharp.TensorFlow.Redist v1.14.0 übernimmt
GPU-Unterstützung
GPU-basierter TensorFlow wird derzeit unterstützt für:
- Windows
- Linux Ab sofort unterstützt TensorFlow die Ausführung unter GPUs für MacOS nicht, daher können wir dies derzeit nicht unterstützen.
Voraussetzungen
Sie müssen über mindestens eine CUDA-kompatible GPU verfügen, um eine Liste kompatibler GPUs zu erhalten, siehe Nvidias Handbuch.
Installieren Sie CUDA v10.1 und CUDNN v7.6.4.
Stellen Sie sicher, dass Sie CUDA v10.1 und keine andere neuere Version installieren. Nachdem Sie CUDNN v7.6.4 .zip Datei heruntergeladen und entpackt haben, 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 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 finden Sie im CuDNN-Installationshandbuch.
Usage
Um TensorFlow mit GPU-Unterstützung zu verwenden, hängt je nach Betriebssystem eine NuGet-Abhängigkeit vom 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.
Troubleshooting
Wenn Sie Ihre GPU nach dem Hinzufügen der GPU-basierten TensorFlow NuGet nicht verwenden können, stellen Sie sicher, dass nur eine Abhängigkeit von der GPU-basierten Version vorhanden ist. Wenn Sie eine Abhängigkeit von NuGets haben, wird stattdessen der CPU-basierte TensorFlow ausgeführt.
Details des Schulungsalgorithmus
Trainiert ein Deep Neural Network(DNN) durch Nutzung eines vorhandenen vortrainierten Modells wie Resnet50 zum Klassifizieren von Bildern. Die Technik wurde von TensorFlows Lernprogramm zur Neuschulung der Bildklassifizierung inspiriert.
Felder
| Name | Beschreibung |
|---|---|
| FeatureColumn |
Die Featurespalte, die der Trainer erwartet. (Geerbt von TrainerEstimatorBase<TTransformer,TModel>) |
| LabelColumn |
Die Bezeichnungsspalte, die der Trainer erwartet. Dies kann sein |
| WeightColumn |
Die Gewichtsspalte, die der Trainer erwartet. Dies kann sein |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Info |
Zusatzinformationen über den Trainer in Bezug auf seine Fähigkeiten und Anforderungen. |
Methoden
| Name | Beschreibung |
|---|---|
| Finalize() |
Zum IEstimator<TTransformer> Training eines Deep Neural Network(DNN) zum Klassifizieren von Bildern. |
| Fit(IDataView, IDataView) |
Trainiert eine ImageClassificationTrainer Verwendung von Schulungs- und Validierungsdaten, gibt eine ImageClassificationModelParameters. |
| Fit(IDataView) |
Züge und Gibt einen ITransformer. (Geerbt von TrainerEstimatorBase<TTransformer,TModel>) |
| GetOutputSchema(SchemaShape) |
Zum IEstimator<TTransformer> Training eines Deep Neural Network(DNN) zum Klassifizieren von Bildern. (Geerbt von TrainerEstimatorBase<TTransformer,TModel>) |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Fügen Sie einen "Zwischenspeicherungsprüfpunkt" an die Schätzkette an. Dadurch wird sichergestellt, dass die nachgeschalteten Schätzer anhand zwischengespeicherter Daten trainiert werden. Es ist hilfreich, einen Zwischenspeicherprüfpunkt vor Trainern zu haben, die mehrere Datendurchläufe übernehmen. |
| WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
Geben Sie bei einer Schätzung ein Wrapping-Objekt zurück, das eine Stellvertretung aufruft, sobald Fit(IDataView) sie aufgerufen wird. Es ist häufig wichtig, dass ein Schätzer Informationen zu dem, was passt, zurückgeben, weshalb die Fit(IDataView) Methode ein speziell typiertes Objekt und nicht nur ein allgemeines ITransformerObjekt zurückgibt. IEstimator<TTransformer> Gleichzeitig werden jedoch oft in Pipelines mit vielen Objekten gebildet, daher müssen wir möglicherweise eine Kette von Schätzern bauen, über EstimatorChain<TLastTransformer> die der Schätzer, für den wir den Transformator erhalten wollen, irgendwo in dieser Kette begraben wird. Für dieses Szenario können wir über diese Methode einen Delegat anfügen, der aufgerufen wird, sobald "Fit" aufgerufen wird. |