Udostępnij za pośrednictwem


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ć tego trenera, 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ć zmiennym wektorem Byte.

Ten trener generuje następujące kolumny:

Nazwa kolumny wyjściowej Typ kolumny Opis
Score WektorSingle Wyniki wszystkich klas. Wyższa wartość oznacza wyższe prawdopodobieństwo, że należy do skojarzonej klasy. Jeśli element i-th ma największą wartość, przewidywany indeks etykiety będzie i.Należy pamiętać, że i jest indeksem zerowym.
PredictedLabel typ klucza Indeks przewidywanej etykiety. Jeśli jego wartość to i, rzeczywista etykieta będzie kategorią i-th w typie etykiety wejściowej wartości klucza.

Cechy trenera

Zadanie uczenia maszynowego Klasyfikacja wieloklasowa
Czy normalizacja jest wymagana? Nie
Czy buforowanie jest wymagane? Nie
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
Eksportowanie do pliku ONNX Nie

Korzystanie z interfejsów API opartych na technologii TensorFlow

Aby uruchomić wszystkie interfejsy API oparte na bibliotece TensorFlow ML.Net, należy najpierw dodać zależność NuGet od biblioteki redystorystycznej tensorFlow. Obecnie są dostępne 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

Funkcja TensorFlow oparta na procesorze CPU jest obecnie obsługiwana w następujących systemach:

  • Linux
  • MacOS
  • Windows

Aby uzyskać bibliotekę TensorFlow, pracując nad procesorem CPU, należy podjąć zależność NuGet od biblioteki SciSharp.TensorFlow.Redist w wersji 1.14.0

Obsługa procesora GPU

Funkcja 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

Musisz mieć co najmniej jeden procesor GPU zgodny z cudA, aby uzyskać listę zgodnych procesorów GPU, zobacz Przewodnik firmy Nvidia.

Zainstaluj interfejs CUDA w wersji 10.1 i CUDNN w wersji 7.6.4.

Upewnij się, że zainstalowano interfejs 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 stronie cuDNN, możesz postępować zgodnie z przewodnikiem dotyczącym instalacji cuDNN.

Użycie

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 w celu wykorzystania procesora GPU na potrzeby operacji TensorFlow.

Rozwiązywanie problemów

Jeśli nie możesz używać 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 oparty na procesorze TensorFlow.

Szczegóły algorytmu trenowania

Trenuje głęboką sieć neuronową (DNN) przy użyciu istniejącego wstępnie wytrenowanego modelu, takiego jak Resnet50 do celów klasyfikowania obrazów. Technika została zainspirowana samouczkiem dotyczącym ponownego trenowania klasyfikacji obrazów w usłudze TensorFlow

Pola

FeatureColumn

Kolumna funkcji, której oczekuje trener.

(Odziedziczone po TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

Kolumna etykiety, którą oczekuje trener. Może to być nullwartość , która wskazuje, że etykieta nie jest używana do trenowania.

(Odziedziczone po TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

Kolumna wagi, którą oczekuje trener. Może to być null, co wskazuje, że waga nie jest używana do trenowania.

(Odziedziczone po TrainerEstimatorBase<TTransformer,TModel>)

Właściwości

Info

Dodatkowe informacje o trenerze pod względem jego możliwości i wymagań.

Metody

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 treningowych, 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

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 względem buforowanych danych. Warto mieć punkt kontrolny buforowania, zanim trenerzy przejmą 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ólną ITransformerwartość . Jednak w tym samym czasie IEstimator<TTransformer> często są 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 zostanie wywołany po wywołaniu dopasowania.

Dotyczy