Bagikan melalui


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 MNISTtestaction = "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