ImageClassificationTrainer Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
-
TrainerEstimatorBase<MulticlassPredictionTransformer<ImageClassificationModelParameters>,ImageClassificationModelParameters>ImageClassificationTrainer
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 |
WeightColumn |
Sloupec hmotnosti, který trenér očekává. Může to být |
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. |