Aracılığıyla paylaş


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 verilerinin anahtar türü ve özellik sütununun değişken boyutlu bir vektör olması Bytegerekir.

Bu eğitmen aşağıdaki sütunları oluşturur:

Çı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-th öğesi en büyük değere sahipse, tahmin edilen etiket dizini i olur. Sıfır tabanlı dizin olduğunu unutmayın.
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? No
Önbelleğe alma gerekli mi? No
Microsoft.ML 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 No

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. Biri GPU desteği için derlenmiş, diğeri ise yalnızca CPU desteğine sahip.

Yalnızca CPU

CPU tabanlı TensorFlow şu anda şu anda şu anda desteklenmektedir:

  • Linux
  • macOS
  • Windows

TensorFlow'un YALNıZCA CPU üzerinde çalışmasını sağlamak için SciSharp.TensorFlow.Redist v1.14.0'da NuGet bağımlılığı almaktır

GPU desteği

GPU tabanlı TensorFlow şu anda şu anda şu anda desteklenmektedir:

  • Windows
  • Linux TensorFlow şu andan itibaren 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'ya sahip olmanız gerekir. Bkz. Nvidia Kılavuzu.

CUDA v10.1 ve CUDNN v7.6.4'ü yükleyin.

Diğer yeni sürümleri değil CUDA v10.1'i yüklediğinizden emin olun. CUDNN v7.6.4 .zip dosyasını indirip 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 takip edebilirsiniz.

Kullanım

TensorFlow'u GPU desteğiyle kullanmak için işletim sisteminize bağlı olarak aşağıdaki pakete bir NuGet bağımlılığı alı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.

Sorun giderme

GPU tabanlı TensorFlow NuGet'i ekledikten sonra GPU'nuzu kullanamıyorsanız yalnızca GPU tabanlı sürüme 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 Bir Derin Sinir Ağı (DNN) eğiter. Bu teknik TensorFlow'un yeniden eğitilen görüntü sınıflandırma öğreticisinden esinlenildi

Alanlar

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. nullolabilir, bu da ağırlığın eğitim için kullanılmadığını gösterir.

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

Özellikler

Info

Eğitmenin yetenekleri ve gereksinimleri bakımından yardımcı bilgiler.

Yöntemler

Finalize()

Görüntüleri IEstimator<TTransformer> sınıflandırmak için Derin Sinir Ağı(DNN) eğitimi için.

Fit(IDataView)

bir ITransformereğitip döndürür.

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

Hem eğitim hem de doğrulama verilerini kullanarak bir ImageClassificationTrainer eğiter, döndürür ImageClassificationModelParameters.

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ı

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

Tahmin zincirine 'önbelleğe alma denetim noktası' ekleme. Bu, aşağı akış tahmincilerinin önbelleğe alınan verilere karşı eğitilmesini sağlar. Birden çok veri geçiren eğitmenlerden önce bir önbelleğe alma kontrol noktası 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ülü olduğu bir tahmin aracı zinciri oluşturmamız gerekebilir. Bu senaryo için, bu yöntem aracılığıyla sığdır çağrıldıktan sonra çağrılacak bir temsilci ekleyebiliriz.

Şunlara uygulanır