Gambaran umum penggunaan CNTK
Untuk menggunakan CNTK, Anda perlu mengunduh biner yang dapat dieksekusi atau mengunduh kode sumber dan mengkompilasinya di komputer Anda (detail). Ada tiga tugas utama (atau tindakan) yang didukung oleh CNTK:
- Melatih - Menentukan jaringan dan melatihnya untuk menghasilkan model terlatih menggunakan data pelatihan
- Evaluasi - Menguji model terlatih untuk menilai performanya menggunakan data pengujian
- Sebarkan - Gunakan model terlatih, misalnya dalam solusi Anda sendiri, untuk mengklasifikasikan instans baru
Gambaran umum singkat untuk masing-masing tugas ini diberikan di bawah ini dan penunjuk ke deskripsi yang lebih rinci disediakan. Selain itu ada tugas lain yang didukung CNTK seperti mengedit model yang ada dan menulis output simpul ke file. Deskripsi ini disediakan di bagian Topik Tingkat Lanjut di halaman Perintah tingkat atas .
Melatih model menggunakan CNTK
Melatih jaringan neural dengan CNTK melibatkan tiga komponen yang harus dikonfigurasi:
- jaringan: jaringan neural, termasuk struktur/rumusnya, parameter model. Kriteria pelatihan dan metrik evaluasi juga disertakan di sini.
- pembaca: bagaimana data pelatihan dibaca
- SGD: parameter hiper dari proses gradien stochastic
Anda perlu memberikan informasi ini melalui file konfigurasi sebagai argumen pertama saat memanggil CNTK yang dapat dieksekusi. File konfigurasi menggunakan sintaks tertentu. Silakan lihat Gambaran umum file konfigurasi untuk detail tentang file konfigurasi.
Dalam hal berikut, kami menggunakan konfigurasi CNTK dan hasil dari contoh MNIST, khususnya konfigurasi '01_OneHidden_ndl_deprecated.cntk' (lihat Image/GettingStarted dan 01_OneHidden.cntk untuk detail selengkapnya).
Baris perintah CNTK untuk contoh ini adalah cntk configFile=01_OneHidden_ndl_deprecated.cntk
. Cuplikan berikut memberikan gambaran umum tentang konten file konfigurasi yang relevan untuk pelatihan.
modelDir = "$OutputDir$/Models"
deviceId = 0
command = MNISTtrain
modelPath = "$modelDir$/01_OneHidden"
MNISTtrain = [
action = "train"
# network definition
BrainScriptNetworkBuilder = (new ComputationNetwork
include "$ConfigDir$/01_OneHidden.bs"
)
# learner configuration
SGD = [
...
]
# reader configuration
reader = [
readerType = "CNTKTextFormatReader"
file = "$DataDir$/Train-28x28_cntk_text.txt"
...
]
]
Cuplikan kode di atas mendefinisikan perintah yang disebut MNISTtrain
dengan action = "train"
. Tindakan lain yang didukung adalah misalnya test
atau write
. Parameter deviceId
menentukan apakah akan menggunakan CPU atau GPU. Ketika diatur ke "auto"
, CNTK akan memilih perangkat terbaik yang tersedia. Atur ke -1
untuk menggunakan CPU atau ke nilai >=0 untuk menggunakan GPU tertentu. menentukan modelPath
tempat untuk menyimpan model terlatih perantara dan akhir. Dalam contoh ini, ia menggunakan variabel yang ModelDir
ditentukan di awal file konfigurasi.
Tiga blok konfigurasi utama untuk pelatihan menentukan jaringan itu sendiri dan parameter untuk algoritma pelatihan dan pembaca data.
- Penyusun jaringan - di sini Anda menentukan topologi dan detail jaringan seperti ukuran dan jumlah lapisan dan jenis node. Anda dapat menggunakan Simple Network Builder untuk model standar atau BrainScript Network Builder untuk model kustom. Silakan merujuk ke halaman yang sesuai untuk detailnya.
- SGD - blok ini memungkinkan Anda membuat parameter algoritma pelatihan (penurunan gradien stochastic). Opsi yang dapat dikonfigurasi termasuk momentum, tingkat pembelajaran adaptif, ukuran minibatch adaptif, pelatihan paralel. Lihat blok SGD untuk detail selengkapnya.
- pembaca - blok pembaca menentukan pembaca mana yang akan digunakan dan di mana file input yang sesuai berada. CNTK menyediakan beberapa pembaca data untuk format dan tugas yang berbeda (lihat Blok pembaca).
Terakhir, baris command = MNISTtrain
menentukan tugas mana yang ditentukan untuk dijalankan. Untuk menjalankan beberapa tugas secara berturut-turut, misalnya pelatihan dan evaluasi, cukup tambahkan lebih banyak tugas ke perintah yang dipisahkan oleh titik dua: command = "MNISTtrain:MNISTtest"
.
Mengevaluasi model terlatih
Untuk mengevaluasi akurasi model terlatih, Anda menggunakan eval
perintah atau test
(lihat juga Melatih, Menguji, Eval untuk detail selengkapnya). Konfigurasi yang sesuai dalam contoh MNIST 01_OneHidden.cntk terlihat sebagai berikut.
testNetwork = {
action = "test"
minibatchSize = 1024 # reduce this if you run out of memory
reader = {
readerType = "CNTKTextFormatReader"
file = "$DataDir$/Test-28x28_cntk_text.txt"
input = {
features = { dim = 784 ; format = "dense" }
labels = { dim = 10 ; format = "dense" }
}
}
}
Blok menggunakan MNISTtest
action = "test"
. Untuk tindakan, test
Anda perlu menentukan model yang harus digunakan untuk pengujian menggunakan modelPath
parameter . Dalam contoh modelPath
ini tidak didefinisikan di dalam MNISTtest
blok tetapi pada tingkat atas (lihat bagian pelatihan di atas) dan digunakan oleh train
tindakan dan test
. reader
Di dalam blok Anda menentukan file data yang harus digunakan untuk pengujian, Test-28x28.txt
dalam contoh. Terakhir, Anda harus mengatur command = MNISTtest
dan menjalankan cntk configFile=01_OneHidden_ndl_deprecated.cntk
untuk menjalankan pengujian. Hasil pada baris perintah adalah:
Final Results: Minibatch[1-625]: errs = 2.39% * 10000; ce = 0.076812531 * 10000; Perplexity = 1.0798396
COMPLETED!
Menggunakan model terlatih dalam kode Anda sendiri
Setelah melatih model, Anda memerlukan fungsionalitas untuk mengevaluasi model di lingkungan target Anda. CNTK menyediakan beberapa cara untuk melayani model Anda dalam skenario yang berbeda. Anda dapat menggunakan model terlatih dari C++, Python, C# atau bahasa .NET lainnya. Anda dapat menjalankan evaluasi pada komputer Anda atau di Azure. Bagian Mengevaluasi Model CNTK (lihat bilah sisi) memiliki banyak detail termasuk evaluasi menggunakan C++/Python/C#/Azure.
Langkah berikutnya