ImageClassificationTrainer Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
-
TrainerEstimatorBase<MulticlassPredictionTransformer<ImageClassificationModelParameters>,ImageClassificationModelParameters>ImageClassificationTrainer
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 |
WeightColumn |
Kolom berat yang diharapkan pelatih. Dapat berupa |
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. |