ImageClassificationTrainer Sınıf

Tanım

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

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 null.

(Devralındığı yer: TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

Eğitmenin beklediği ağırlık sütunu. olabilir null, bu da ağırlığın eğitim için kullanılmadığını gösterir.

(Devralındığı yer: TrainerEstimatorBase<TTransformer,TModel>)

Ö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.

Şunlara uygulanır