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ć 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ć |
WeightColumn |
Kolumna wagi, którą oczekuje trener. Może to być |
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. |