ImageClassificationTrainer Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Element IEstimator<TTransformer> do trenowania głębokiej sieci neuronowej (DNN) do klasyfikowania obrazów.
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)
- Dziedziczenie
-
TrainerEstimatorBase<MulticlassPredictionTransformer<ImageClassificationModelParameters>,ImageClassificationModelParameters>ImageClassificationTrainer
Uwagi
Aby utworzyć ten trener, użyj klasyfikacji obrazów.
Kolumny wejściowe i wyjściowe
Dane kolumny etykiety wejściowej muszą być typem klucza , a kolumna funkcji musi być wektorem Byteo zmiennym rozmiarze .
Ten trener zwraca następujące kolumny:
| Nazwa kolumny wyjściowej | Typ kolumny | Description |
|---|---|---|
Score |
Wektor ofSingle | Wyniki wszystkich klas. Wyższa wartość oznacza większe prawdopodobieństwo, aby należeć do skojarzonej klasy. Jeśli element i-th ma największą wartość, przewidywany indeks etykiety będzie i.Zwróć uwagę, że i jest indeksem zerowym. |
PredictedLabel |
klucz typ | Indeks przewidywanej etykiety. Jeśli jej wartość to i, rzeczywista etykieta będzie kategorią i-th w typie etykiety wejściowej z wartością klucza. |
Cechy trenera
| Zadanie uczenia maszynowego | Klasyfikacja wieloklasowa |
| Czy normalizacja jest wymagana? | No |
| Czy buforowanie jest wymagane? | No |
| Wymagane narzędzie NuGet oprócz Microsoft.ML | Microsoft.ML.Vision i SciSharp.TensorFlow.Redist / SciSharp.TensorFlow.Redist-Windows-GPU / SciSharp.TensorFlow.Redist-Linux-GPU |
| Możliwość eksportowania do ONNX | No |
Korzystanie z interfejsów API opartych na protokole TensorFlow
Aby można było uruchamiać wszystkie interfejsy API ML.Net oparte na bibliotece TensorFlow, należy najpierw dodać zależność NuGet od biblioteki redist biblioteki TensorFlow. Obecnie istnieją dwie wersje, których można użyć. Jeden, który jest kompilowany na potrzeby obsługi procesora GPU, i taki, który ma tylko obsługę procesora CPU.
Tylko procesor CPU
Przepływ tensorFlow oparty na procesorze CPU jest obecnie obsługiwany w następujących systemach:
- Linux
- MacOS
- Windows
Aby uzyskać bibliotekę TensorFlow działającą na procesorze CPU, wystarczy, aby pobrać zależność NuGet od biblioteki SciSharp.TensorFlow.Redist w wersji 1.14.0
Obsługa procesora GPU
Biblioteka TensorFlow oparta na procesorze GPU jest obecnie obsługiwana w następujących systemach:
- Windows
- System Linux od teraz TensorFlow nie obsługuje uruchamiania na procesorach GPU dla systemu MacOS, więc obecnie nie możemy tego obsługiwać.
Wymagania wstępne
Aby uzyskać listę zgodnych procesorów GPU firmy Nvidia, musisz mieć co najmniej jeden procesor GPU zgodny ze standardem CUDA.
Zainstaluj interfejs CUDA w wersji 10.1 i CUDNN w wersji 7.6.4.
Upewnij się, że zainstalowano wersję CUDA w wersji 10.1, a nie inną nowszą wersję. Po pobraniu pliku CUDNN w wersji 7.6.4 .zip i rozpakowaniu go należy wykonać następujące czynności:
copy <CUDNN_zip_files_path>\cuda\bin\cudnn64_7.dll to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
W przypadku programowania w języku 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
Aby uzyskać więcej informacji na temat nazwy cuDNN, możesz skorzystać z przewodnika instalacji cuDNN.
Usage
Aby użyć biblioteki TensorFlow z obsługą procesora GPU, należy użyć zależności NuGet od następującego pakietu w zależności od systemu operacyjnego:
- Windows —> SciSharp.TensorFlow.Redist—Windows-GPU
- Linux —> SciSharp.TensorFlow.Redist —Linux-GPU
Nie należy modyfikować kodu, aby korzystać z procesora GPU dla operacji TensorFlow.
Troubleshooting
Jeśli nie możesz użyć procesora GPU po dodaniu procesora GPU opartego na procesorze TensorFlow NuGet, upewnij się, że istnieje tylko zależność od wersji opartej na procesorze GPU. Jeśli masz zależność od obu pakietów NuGet, zamiast tego zostanie uruchomiony procesor TensorFlow oparty na procesorze.
Szczegóły algorytmu trenowania
Trenuje głęboką sieć neuronową (DNN) przy użyciu istniejącego wstępnie wytrenowanego modelu, takiego jak Resnet50 na potrzeby klasyfikowania obrazów. Technika została zainspirowana samouczkiem dotyczącym ponownego trenowania klasyfikacji obrazów w tensorFlow
Pola
| Nazwa | Opis |
|---|---|
| FeatureColumn |
Kolumna funkcji, której oczekuje trener. (Odziedziczone po TrainerEstimatorBase<TTransformer,TModel>) |
| LabelColumn |
Kolumna etykiety oczekiwana przez trenera. Może to być |
| WeightColumn |
Kolumna wagi oczekiwana przez trenera. Może to być |
Właściwości
| Nazwa | Opis |
|---|---|
| Info |
Dodatkowe informacje o trenerze pod względem jego możliwości i wymagań. |
Metody
| Nazwa | Opis |
|---|---|
| Finalize() |
Element IEstimator<TTransformer> do trenowania głębokiej sieci neuronowej (DNN) do klasyfikowania obrazów. |
| Fit(IDataView, IDataView) |
Trenuje ImageClassificationTrainer przy użyciu zarówno danych szkoleniowych, jak i weryfikacyjnych, zwraca wartość ImageClassificationModelParameters. |
| Fit(IDataView) |
Trenuje i zwraca wartość ITransformer. (Odziedziczone po TrainerEstimatorBase<TTransformer,TModel>) |
| GetOutputSchema(SchemaShape) |
Element IEstimator<TTransformer> do trenowania głębokiej sieci neuronowej (DNN) do klasyfikowania obrazów. (Odziedziczone po TrainerEstimatorBase<TTransformer,TModel>) |
Metody rozszerzania
| Nazwa | Opis |
|---|---|
| AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Dołącz punkt kontrolny buforowania do łańcucha narzędzia do szacowania. Zapewni to, że narzędzia do szacowania podrzędnego zostaną wytrenowane z buforowanych danych. Warto mieć punkt kontrolny buforowania, zanim trenerzy przejdą wiele danych. |
| WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
Biorąc pod uwagę narzędzie do szacowania, zwróć obiekt opakowujący, który wywoła delegata po Fit(IDataView) wywołaniu. Często ważne jest, aby narzędzie do szacowania zwracało informacje o tym, co było odpowiednie, dlatego Fit(IDataView) metoda zwraca specjalnie wpisany obiekt, a nie tylko ogólne ITransformer. Jednak w tym samym czasie IEstimator<TTransformer> są często tworzone w potoki z wieloma obiektami, więc może być konieczne utworzenie łańcucha narzędzi do szacowania za pośrednictwem EstimatorChain<TLastTransformer> miejsca, w którym narzędzie do szacowania, dla którego chcemy uzyskać transformator jest pochowany gdzieś w tym łańcuchu. W tym scenariuszu możemy za pomocą tej metody dołączyć delegata, który będzie wywoływany po wywołaniu dopasowania. |