ImageClassificationTrainer Třída

Definice

Pro IEstimator<TTransformer> trénování hluboké neurální sítě (DNN) pro klasifikaci obrázků.

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)
Dědičnost

Poznámky

K vytvoření tohoto trenéra použijte ImageClassification.

Vstupní a výstupní sloupce

Vstupní data sloupce popisku musí být klíčovým typem a sloupec funkce musí být vektorem Byteproměnné velikosti .

Tento trenér vypíše následující sloupce:

Název výstupního sloupce Typ sloupce Description
Score Vektor vektoruSingle Skóre všech tříd. Vyšší hodnota znamená, že větší pravděpodobnost spadá do přidružené třídy. Pokud má prvek i-th největší hodnotu, předpovězený index popisku by byl i.Všimněte si, že i je index založený na nule.
PredictedLabel klíč typ Index predikovaného popisku. Pokud je hodnota i, skutečný popisek by byl i-th kategorií ve vstupním typu popisku s hodnotou klíče.

Charakteristiky trenéra

Úloha strojového učení Klasifikace s více třídami
Vyžaduje se normalizace? No
Vyžaduje se ukládání do mezipaměti? No
Požadovaný NuGet kromě Microsoft.ML Microsoft.ML.Vision a SciSharp.TensorFlow.Redist / SciSharp.TensorFlow.Redist-Windows-GPU / SciSharp.TensorFlow.Redist-Linux-GPU
Exportovatelné do ONNX No

Použití rozhraní API založených na TensorFlow

Pokud chcete spustit libovolná rozhraní API založená na TensorFlow ML.Net, musíte nejprve přidat závislost NuGet na knihovně Redist TensorFlow. Aktuálně můžete použít dvě verze. Ten, který je zkompilován pro podporu GPU, a ten, který má podporu procesoru, je pouze.

Pouze procesor

TensorFlow založený na procesoru se v současné době podporuje:

  • Linux
  • MacOS
  • Windows

Pokud chcete, aby TensorFlow fungoval pouze na procesoru, stačí vzít závislost NuGetu na SciSharp.TensorFlow.Redist v1.14.0.

Podpora GPU

TensorFlow založený na GPU se v současné době podporuje na:

  • Windows
  • V současné době TensorFlow nepodporuje spouštění na grafických procesorech pro MacOS, takže ho momentálně nemůžeme podporovat.

Požadavky

Pro seznam kompatibilních GPU musíte mít alespoň jeden CUDA kompatibilní GPU, viz Příručka Nvidia.

Nainstalujte CUDA v10.1 a CUDNN v7.6.4.

Ujistěte se, že jste nainstalovali CUDA v10.1, ne žádnou jinou novější verzi. Po stažení SOUBORU CUDNN v7.6.4 .zip a jeho rozbalení musíte provést následující kroky:

copy <CUDNN_zip_files_path>\cuda\bin\cudnn64_7.dll to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin

Vývoj pro 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

Další podrobnosti o cuDNN najdete v průvodci instalací cuDNN.

Usage

Pokud chcete použít TensorFlow s podporou GPU, použijte závislost NuGet na následujícím balíčku v závislosti na vašem operačním systému:

  • Windows -> SciSharp.TensorFlow.Redist–Windows-GPU
  • Linux –> SciSharp.TensorFlow.Redist–Linux-GPU

K využití GPU pro operace TensorFlow by neměla být nutná žádná úprava kódu.

Troubleshooting

Pokud po přidání nuGetu TensorFlow založeného na GPU nemůžete použít GPU, ujistěte se, že existuje jen závislost na verzi založené na GPU. Pokud máte závislost na obou NuGetech, spustí se místo toho TensorFlow založený na procesoru.

Podrobnosti trénovacího algoritmu

Trénuje hloubkovou neurální síť (DNN) využitím existujícího předem natrénovaného modelu, jako je Resnet50, pro účely klasifikace obrázků. Technika byla inspirovaná kurzem opětovného natrénování klasifikace obrázků v TensorFlowu.

Pole

Name Description
FeatureColumn

Sloupec funkcí, který trenér očekává.

(Zděděno od TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

Sloupec popisku, který trenér očekává. Může to být null, což označuje, že popisek se nepoužívá pro trénování.

(Zděděno od TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

Váhový sloupec, který trenér očekává. Může být null, což označuje, že hmotnost není použita pro trénování.

(Zděděno od TrainerEstimatorBase<TTransformer,TModel>)

Vlastnosti

Name Description
Info

Pomocné informace o trenéru z hlediska jeho schopností a požadavků.

Metody

Name Description
Finalize()

Pro IEstimator<TTransformer> trénování hluboké neurální sítě (DNN) pro klasifikaci obrázků.

Fit(IDataView, IDataView)

Trénuje ImageClassificationTrainer pomocí trénovacích i ověřovacích dat, vrátí hodnotu ImageClassificationModelParameters.

Fit(IDataView)

Vlaky a vrací .ITransformer

(Zděděno od TrainerEstimatorBase<TTransformer,TModel>)
GetOutputSchema(SchemaShape)

Pro IEstimator<TTransformer> trénování hluboké neurální sítě (DNN) pro klasifikaci obrázků.

(Zděděno od TrainerEstimatorBase<TTransformer,TModel>)

Metody rozšíření

Name Description
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

Připojte kontrolní bod ukládání do mezipaměti do řetězu odhadce. Tím zajistíte, aby podřízené estimátory byly natrénovány proti datům uloženým v mezipaměti. Před průchodem více dat je užitečné mít kontrolní bod ukládání do mezipaměti.

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

Vzhledem k estimátoru vraťte objekt obtékání, který jednou zavolá delegáta Fit(IDataView) . Často je důležité, aby estimátor vrátil informace o tom, co bylo vhodné, což je důvod, proč Fit(IDataView) metoda vrací konkrétní typ objekt, spíše než jen obecný ITransformer. Ve stejnou dobu se však často vytvářejí do kanálů s mnoha objekty, takže možná budeme muset vytvořit řetěz odhadců prostřednictvím IEstimator<TTransformer> místa, kde odhadovač, EstimatorChain<TLastTransformer> pro který chceme získat transformátor, je někde v tomto řetězu. Pro tento scénář můžeme prostřednictvím této metody připojit delegáta, který bude volána po zavolání fit.

Platí pro