Bagikan melalui


ImageClassificationTrainer Kelas

Definisi

IEstimator<TTransformer> untuk melatih Deep Neural Network (DNN) untuk mengklasifikasikan gambar.

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)
Warisan

Keterangan

Untuk membuat pelatih ini, gunakan ImageClassification.

Kolom Input dan Output

Data kolom label input harus berupa jenis kunci dan kolom fitur harus merupakan vektor berukuran variabel .Byte

Pelatih ini menghasilkan kolom berikut:

Nama Kolom Output Jenis Kolom Deskripsi
Score Vektor dariSingle Skor semua kelas. Nilai yang lebih tinggi berarti probabilitas yang lebih tinggi untuk masuk ke kelas terkait. Jika elemen i-th memiliki nilai terbesar, indeks label yang diprediksi adalah i.Perhatikan bahwa i adalah indeks berbasis nol.
PredictedLabel jenis kunci Indeks label yang diprediksi. Jika nilainya adalah i, label aktual akan menjadi kategori ke-i dalam jenis label input bernilai kunci.

Karakteristik Pelatih

Tugas pembelajaran mesin Klasifikasi multikelas
Apakah normalisasi diperlukan? Tidak
Apakah penembolokan diperlukan? Tidak
NuGet yang diperlukan selain Microsoft.ML Microsoft.ML.Vision dan SciSharp.TensorFlow.Redist / SciSharp.TensorFlow.Redist-Windows-GPU / SciSharp.TensorFlow.Redist-Linux-GPU
Dapat diekspor ke ONNX Tidak

Menggunakan API berbasis TensorFlow

Untuk menjalankan API ML.Net berbasis TensorFlow, Anda harus terlebih dahulu menambahkan dependensi NuGet pada pustaka redist TensorFlow. Saat ini ada dua versi yang dapat Anda gunakan. Satu yang dikompilasi untuk dukungan GPU, dan yang hanya memiliki dukungan CPU.

Hanya CPU

TensorFlow berbasis CPU saat ini didukung pada:

  • Linux
  • MacOS
  • Windows

Untuk membuat TensorFlow bekerja pada CPU hanya dengan mengambil dependensi NuGet pada SciSharp.TensorFlow.Redist v1.14.0

Dukungan GPU

TensorFlow berbasis GPU saat ini didukung pada:

  • Windows
  • Linux Mulai sekarang TensorFlow tidak mendukung berjalan pada GPU untuk MacOS, jadi saat ini kami tidak dapat mendukung ini.

Prasyarat

Anda harus memiliki setidaknya satu GPU yang kompatibel dengan CUDA, untuk daftar GPU yang kompatibel, lihat Panduan Nvidia.

Instal CUDA v10.1 dan CUDNN v7.6.4.

Pastikan Anda menginstal CUDA v10.1, bukan versi lain yang lebih baru. Setelah mengunduh file .zip CUDNN v7.6.4 dan membukanya, Anda perlu melakukan langkah-langkah berikut:

copy <CUDNN_zip_files_path>\cuda\bin\cudnn64_7.dll to <YOUR_DRIVE>\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin

Untuk pengembangan 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

Untuk detail lebih lanjut di cuDNN, Anda dapat mengikuti panduan Penginstalan cuDNN.

Penggunaan

Untuk menggunakan TensorFlow dengan dukungan GPU, ambil dependensi NuGet pada paket berikut tergantung pada OS Anda:

  • Windows -> SciSharp.TensorFlow.Redist-Windows-GPU
  • Linux -> SciSharp.TensorFlow.Redist-Linux-GPU

Tidak ada modifikasi kode yang diperlukan untuk memanfaatkan GPU untuk operasi TensorFlow.

Pemecahan Masalah

Jika Anda tidak dapat menggunakan GPU setelah menambahkan TensorFlow NuGet berbasis GPU, pastikan bahwa hanya ada dependensi pada versi berbasis GPU. Jika Anda memiliki dependensi pada kedua NuGets, TensorFlow berbasis CPU akan berjalan sebagai gantinya.

Detail Algoritma Pelatihan

Melatih Deep Neural Network (DNN) dengan memanfaatkan model yang sudah dilatih sebelumnya seperti Resnet50 untuk tujuan mengklasifikasikan gambar. Teknik ini terinspirasi dari tutorial klasifikasi gambar pelatihan ulang TensorFlow

Bidang

FeatureColumn

Kolom fitur yang diharapkan pelatih.

(Diperoleh dari TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

Kolom label yang diharapkan pelatih. Dapat berupa null, yang menunjukkan bahwa label tidak digunakan untuk pelatihan.

(Diperoleh dari TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

Kolom berat yang diharapkan pelatih. Dapat berupa null, yang menunjukkan bahwa berat tidak digunakan untuk pelatihan.

(Diperoleh dari TrainerEstimatorBase<TTransformer,TModel>)

Properti

Info

Informasi tambahan tentang pelatih dalam hal kemampuan dan persyaratannya.

Metode

Finalize()

IEstimator<TTransformer> untuk melatih Deep Neural Network (DNN) untuk mengklasifikasikan gambar.

Fit(IDataView, IDataView)

ImageClassificationTrainer Melatih menggunakan data pelatihan dan validasi, mengembalikan ImageClassificationModelParameters.

Fit(IDataView)

Melatih dan mengembalikan ITransformer.

(Diperoleh dari TrainerEstimatorBase<TTransformer,TModel>)
GetOutputSchema(SchemaShape)

IEstimator<TTransformer> untuk melatih Deep Neural Network (DNN) untuk mengklasifikasikan gambar.

(Diperoleh dari TrainerEstimatorBase<TTransformer,TModel>)

Metode Ekstensi

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

Tambahkan 'titik pemeriksaan penembolokan' ke rantai estimator. Ini akan memastikan bahwa estimator hilir akan dilatih terhadap data cache. Sangat membantu untuk memiliki titik pemeriksaan penembolokan sebelum pelatih yang mengambil beberapa data berlalu.

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

Mengingat estimator, kembalikan objek pembungkus yang akan memanggil delegasi setelah Fit(IDataView) dipanggil. Seringkali penting bagi estimator untuk mengembalikan informasi tentang apa yang cocok, itulah sebabnya Fit(IDataView) metode mengembalikan objek yang ditik secara khusus, bukan hanya umum ITransformer. Namun, pada saat yang sama, IEstimator<TTransformer> sering dibentuk menjadi alur dengan banyak objek, jadi kita mungkin perlu membangun rantai estimator melalui EstimatorChain<TLastTransformer> tempat estimator yang ingin kita dapatkan transformator dikubur di suatu tempat dalam rantai ini. Untuk skenario itu, kita dapat melalui metode ini melampirkan delegasi yang akan dipanggil setelah pas dipanggil.

Berlaku untuk