Sdílet prostřednictvím


ImageClassificationTrainer Třída

Definice

Trénování IEstimator<TTransformer> 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 VektorSingle Skóre všech tříd. Vyšší hodnota znamená, že vyšší pravděpodobnost spadá do přidružené třídy. Pokud má i-th element největší hodnotu, predikovaný index popisku by byl i.Všimněte si, že i je index založený na nule.
PredictedLabel typ klíče Index predikovaného popisku. Pokud je jeho 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

Aby bylo možné spouštět všechna rozhraní API založená na TensorFlow ML.Net, musíte nejprve přidat závislost NuGet na knihovně Redist TensorFlow. Aktuálně existují dvě verze, které můžete použít. Jeden zkompilovaný pro podporu GPU a jeden, který má podporu pouze procesoru.

Pouze procesor

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

  • Linux
  • MacOS
  • Windows

Chcete-li získat TensorFlow pracovat pouze na procesoru vše, co je vzít závislost NuGet na SciSharp.TensorFlow.Redist v1.14.0

Podpora GPU

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

  • Windows
  • Odteď TensorFlow nepodporuje spouštění na GPU pro MacOS, takže to v současné době nemůžeme podporovat.

Požadavky

Pro seznam kompatibilních GRAFICKÝch procesorů (GPU) kompatibilních s CUDA 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í CUDNN v7.6.4 .zip souboru a rozbalení ho 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 v cuDNN můžete sledovat průvodce instalací cuDNN.

Využití

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.

Řešení potíží

Pokud po přidání NuGetu založeného na GPU nemůžete použít GPU, ujistěte se, že existuje pouze 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) pomocí existujícího předem natrénovaného modelu, jako je Resnet50 pro účely klasifikace obrázků. Technika byla inspirovaná kurzem opětovného vytrénování klasifikace obrázků TensorFlow.

Pole

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

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

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

Vlastnosti

Info

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

Metody

Finalize()

Trénování IEstimator<TTransformer> 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í ImageClassificationModelParametershodnotu .

Fit(IDataView)

Vlaky a vrací hodnotu ITransformer.

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

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

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

Metody rozšíření

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

Připojte k řetězci estimátoru kontrolní bod ukládání do mezipaměti. Tím zajistíte, aby podřízené estimátory byly vytré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 zalamovací objekt, který zavolá delegáta jednou Fit(IDataView) . Často je důležité, aby odhadovač vrátil informace o tom, co bylo vhodné, což je důvod, proč Fit(IDataView) metoda vrací konkrétně typ objekt, nikoli 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ězec estimátorů, kde EstimatorChain<TLastTransformer> je odhadovač, IEstimator<TTransformer> pro který chceme získat transformátor, zakopán někde v tomto řetězci. 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