CNTK - Memantau Model

Pada bab ini, kita akan memahami cara memantau model di CNTK.

pengantar

Di bagian sebelumnya, kami telah melakukan beberapa validasi pada model NN kami. Tapi, apakah itu juga perlu dan mungkin untuk memantau model kita selama pelatihan?

Ya, sudah kami gunakan ProgressWriterkelas untuk memantau model kami dan ada banyak cara lain untuk melakukannya. Sebelum membahas lebih dalam, pertama-tama mari kita lihat cara kerja pemantauan di CNTK dan bagaimana kita dapat menggunakannya untuk mendeteksi masalah dalam model NN kita.

Callback di CNTK

Sebenarnya, selama pelatihan dan validasi, CNTK memungkinkan kita menentukan callback di beberapa tempat di API. Pertama, mari kita lihat lebih dekat kapan CNTK memanggil callback.

Kapan CNTK meminta callback?

CNTK akan memanggil callback pada momen set pelatihan dan pengujian when−

  • Minibatch selesai.

  • Sapuan penuh atas kumpulan data diselesaikan selama pelatihan.

  • Sebuah minibatch pengujian selesai.

  • Sapuan penuh atas kumpulan data diselesaikan selama pengujian.

Menentukan panggilan balik

Saat bekerja dengan CNTK, kita dapat menentukan callback di beberapa tempat di API. Misalnya-

Kapan call train pada fungsi loss?

Di sini, ketika kita memanggil train pada fungsi kerugian, kita bisa menetapkan satu set callback melalui argumen callback sebagai berikut−

training_summary=loss.train((x_train,y_train),
parameter_learners=[learner],
callbacks=[progress_writer]),
minibatch_size=16, max_epochs=15)

Saat bekerja dengan sumber minibatch atau menggunakan loop minibatch manual−

Dalam hal ini, kita dapat menentukan callback untuk tujuan pemantauan saat membuat file Trainer sebagai berikut-

from cntk.logging import ProgressPrinter
callbacks = [
   ProgressPrinter(0)
]
Trainer = Trainer(z, (loss, metric), learner, [callbacks])

Berbagai alat pemantauan

Mari kita pelajari tentang alat pemantauan yang berbeda.

ProgressPrinter

Saat membaca tutorial ini, Anda akan menemukannya ProgressPrintersebagai alat pemantauan yang paling banyak digunakan. Beberapa karakteristikProgressPrinter alat pemantau adalah-

ProgressPrinterclass menerapkan logging berbasis konsol dasar untuk memantau model kami. Itu bisa masuk ke disk yang kita inginkan.

Sangat berguna saat bekerja dalam skenario pelatihan terdistribusi.

Ini juga sangat berguna saat bekerja dalam skenario di mana kita tidak dapat masuk ke konsol untuk melihat keluaran dari program Python kita.

Dengan bantuan kode berikut, kita dapat membuat sebuah instance ProgressPrinter-

ProgressPrinter(0, log_to_file=’test.txt’)

Kita akan mendapatkan hasil yang telah kita lihat di bagian sebelumnya−

Test.txt
CNTKCommandTrainInfo: train : 300
CNTKCommandTrainInfo: CNTKNoMoreCommands_Total : 300
CNTKCommandTrainBegin: train
-------------------------------------------------------------------
average since average since examples
loss last metric last
------------------------------------------------------
Learning rate per minibatch: 0.1
1.45 1.45 -0.189 -0.189 16
1.24 1.13 -0.0382 0.0371 48
[………]

TensorBoard

Salah satu kelemahan menggunakan ProgressPrinter adalah, kami tidak bisa mendapatkan gambaran yang baik tentang bagaimana kerugian dan kemajuan metrik dari waktu ke waktu sulit. TensorBoardProgressWriter adalah alternatif yang bagus untuk kelas ProgressPrinter di CNTK.

Sebelum menggunakannya, kita perlu menginstalnya terlebih dahulu dengan bantuan perintah berikut -

pip install tensorboard

Sekarang, untuk menggunakan TensorBoard, kita perlu menyiapkan TensorBoardProgressWriter dalam kode pelatihan kami sebagai berikut-

import time
from cntk.logging import TensorBoardProgressWriter
tensorbrd_writer = TensorBoardProgressWriter(log_dir=’logs/{}’.format(time.time()),freq=1,model=z)

Ini adalah praktik yang baik untuk memanggil metode tutup TensorBoardProgressWriter Misalnya setelah selesai dengan pelatihan NNmodel.

Kita dapat memvisualisasikan TensorBoard mencatat data dengan bantuan perintah berikut -

Tensorboard –logdir logs