Język

ImageClassificationTrainer Klasa

Definicja

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

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ć nullwartość , która wskazuje, że etykieta nie jest używana do trenowania.

(Odziedziczone po TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

Kolumna wagi oczekiwana przez trenera. Może to być nullwartość , która wskazuje, że waga nie jest używana do trenowania.

(Odziedziczone po TrainerEstimatorBase<TTransformer,TModel>)

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.

Dotyczy