ImageClassificationTrainer Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Görüntüleri IEstimator<TTransformer> sınıflandırmak için Derin Sinir Ağı (DNN) eğitimi için.
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)
- Devralma
-
TrainerEstimatorBase<MulticlassPredictionTransformer<ImageClassificationModelParameters>,ImageClassificationModelParameters>ImageClassificationTrainer
Açıklamalar
Bu eğitmeni oluşturmak için ImageClassification kullanın.
Giriş ve Çıkış Sütunları
Giriş etiketi sütun verileri anahtar türü ve özellik sütunu değişken boyutlu bir vektör olmalıdır Byte.
Bu eğitmen aşağıdaki sütunları üretir:
| Çıkış Sütunu Adı | Sütun Türü | Description |
|---|---|---|
Score |
VektörSingle | Tüm sınıfların puanları. Daha yüksek değer, ilişkili sınıfa düşme olasılığının yüksek olduğu anlamına gelir. i. öğesi en büyük değere sahipse, tahmin edilen etiket dizini i.Sıfır tabanlı dizin olduğuma dikkat edin. |
PredictedLabel |
anahtar türü | Tahmin edilen etiketin dizini. Değeri i ise, gerçek etiket anahtar değerli giriş etiketi türündeki i. kategori olacaktır. |
Eğitmen Özellikleri
| Makine öğrenmesi görevi | Çok sınıflı sınıflandırma |
| Normalleştirme gerekli mi? | Hayır |
| Önbelleğe alma gerekli mi? | Hayır |
| Microsoft.ML'ye ek olarak gerekli NuGet | Microsoft.ML.Vision ve SciSharp.TensorFlow.Redist / SciSharp.TensorFlow.Redist-Windows-GPU / SciSharp.TensorFlow.Redist-Linux-GPU |
| ONNX'e aktarılabilir | Hayır |
TensorFlow tabanlı API'leri kullanma
TensorFlow tabanlı ML.Net API'lerini çalıştırmak için önce TensorFlow redist kitaplığına bir NuGet bağımlılığı eklemeniz gerekir. Şu anda kullanabileceğiniz iki sürüm vardır. Gpu desteği için derlenen ve yalnızca CPU desteği olan bir destek.
Yalnızca CPU
CPU tabanlı TensorFlow şu anda şu anda şu konuda desteklenmektedir:
- Linux
- macOS
- Windows
TensorFlow'un YALNıZCA CPU üzerinde çalışmasını sağlamak için SciSharp.TensorFlow.Redist v1.14.0 üzerinde NuGet bağımlılığı almaktır
GPU desteği
GPU tabanlı TensorFlow şu anda aşağıdakilerde desteklenmektedir:
- Windows
- Linux TensorFlow şu anda MacOS için GPU'larda çalıştırmayı desteklemediğinden şu anda bunu destekleyemiyoruz.
Önkoşullar
Uyumlu GPU'ların listesi için en az bir CUDA uyumlu GPU'nuz olmalıdır . Bkz. Nvidia Kılavuzu.
CUDA v10.1 ve CUDNN v7.6.4'ü yükleyin.
CuDA v10.1'i yüklediğinizden emin olun, daha yeni bir sürüm değil. CUDNN v7.6.4 .zip dosyasını indirdikten ve paketi açtıktan sonra aşağıdaki adımları uygulamanız gerekir:
copy <CUDNN_zip_files_path>\cuda\bin\cudnn64_7.dll to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
C/C++ geliştirme için:
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
cuDNN'deki diğer ayrıntılar için cuDNN Yükleme kılavuzunu izleyebilirsiniz.
Usage
TensorFlow'u GPU desteğiyle kullanmak için işletim sisteminize bağlı olarak aşağıdaki pakete bir NuGet bağımlılığı uygulayın:
- Windows -> SciSharp.TensorFlow.Redist-Windows-GPU
- Linux -> SciSharp.TensorFlow.Redist-Linux-GPU
TensorFlow işlemleri için GPU'nun kullanılabilmesi için kod değişikliğine gerek yoktur.
Troubleshooting
GPU tabanlı TensorFlow NuGet'i ekledikten sonra GPU'nuzu kullanamıyorsanız, GPU tabanlı sürüme yalnızca bir bağımlılık olduğundan emin olun. Her iki NuGet'e de bağımlılığınız varsa, bunun yerine CPU tabanlı TensorFlow çalıştırılır.
Eğitim Algoritması Ayrıntıları
Görüntüleri sınıflandırmak amacıyla Resnet50 gibi önceden eğitilmiş mevcut bir modelden yararlanarak Derin Sinir Ağı (DNN) eğitilir. Bu teknik TensorFlow'un yeniden eğitilen görüntü sınıflandırma öğreticisinden esinlenildi
Alanlar
| Name | Description |
|---|---|
| FeatureColumn |
Eğitmenin beklediği özellik sütunu. (Devralındığı yer: TrainerEstimatorBase<TTransformer,TModel>) |
| LabelColumn |
Eğitmenin beklediği etiket sütunu. etiketin eğitim için kullanılmadığını gösteren olabilir |
| WeightColumn |
Eğitmenin beklediği ağırlık sütunu. olabilir |
Özellikler
| Name | Description |
|---|---|
| Info |
Eğitimci hakkında yetenek ve gereksinimleri bakımından yardımcı bilgiler. |
Yöntemler
| Name | Description |
|---|---|
| Finalize() |
Görüntüleri IEstimator<TTransformer> sınıflandırmak için Derin Sinir Ağı (DNN) eğitimi için. |
| Fit(IDataView, IDataView) |
Hem eğitim hem de doğrulama verilerini kullanarak bir ImageClassificationTrainer eğiterek bir ImageClassificationModelParametersdöndürür. |
| Fit(IDataView) |
Bir eğitip döndürür ITransformer. (Devralındığı yer: TrainerEstimatorBase<TTransformer,TModel>) |
| GetOutputSchema(SchemaShape) |
Görüntüleri IEstimator<TTransformer> sınıflandırmak için Derin Sinir Ağı (DNN) eğitimi için. (Devralındığı yer: TrainerEstimatorBase<TTransformer,TModel>) |
Uzantı Metotları
| Name | Description |
|---|---|
| AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Tahmin zincirine bir 'önbelleğe alma denetim noktası' ekler. Bu, aşağı akış tahmincilerinin önbelleğe alınmış verilere karşı eğitilmesini sağlar. Birden fazla veri alan eğitmenler geçişten önce bir önbelleğe alma kontrol noktasının olması yararlıdır. |
| WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
Tahmin aracı verildiğinde, bir temsilci çağrıldıktan sonra Fit(IDataView) çağıracak bir sarmalama nesnesi döndürün. Tahmin aracının neyin uygun olduğu hakkında bilgi döndürmesi genellikle önemlidir. Bu nedenle Fit(IDataView) yöntem yalnızca genel ITransformerbir nesne yerine özel olarak yazılan bir nesne döndürür. Bununla birlikte, aynı zamanda, IEstimator<TTransformer> genellikle birçok nesne içeren işlem hatları halinde oluşturulur, bu nedenle transformatörü almak istediğimiz tahmin aracının EstimatorChain<TLastTransformer> bu zincirde bir yere gömüldüğü bir tahmin zinciri oluşturmamız gerekebilir. Bu senaryo için, bu yöntem aracılığıyla uygun çağrıldıktan sonra çağrılacak bir temsilci ekleyebiliriz. |