Tutorial TensorBoard: Visualisasi Grafik TensorFlow
⚡ Ringkasan Cerdas
TensorBoard adalah antarmuka visual untuk menjalankan pelatihan TensorFlow, yang menampilkan kurva kerugian, grafik model, histogram bobot, dan embedding. Panduan ini menulis file peristiwa dengan estimator, kemudian membuka dasbor pada port 6006.
Apa itu TensorBoard?
TensorBoard adalah antarmuka yang digunakan untuk memvisualisasikan grafik dan alat-alat lain untuk memahami, men-debug, dan mengoptimalkan model. Ini adalah alat yang menyediakan pengukuran dan visualisasi untuk alur kerja pembelajaran mesin. Ini membantu tracMetrik k seperti loss dan akurasi, memvisualisasikan grafik model, dan memproyeksikan embedding ke ruang berdimensi lebih rendah.
TensorBoard dikirimkan dengan TensorFlow dan berjalan sebagai server web lokal kecil yang membaca file peristiwa yang ditulis oleh pekerjaan pelatihan ke disk.
Contoh Visualisasi Grafik TensorFlow menggunakan TensorBoard
Gambar di bawah ini berasal dari grafik TensorBoard yang akan Anda buat dalam tutorial ini. Ini adalah panel utama:
Dari gambar di bawah, Anda dapat melihat panel visualisasi grafik TensorBoard. Panel berisi tab berbeda, yang ditautkan ke tingkat informasi yang Anda tambahkan saat menjalankan model.
- Besaran skalar: Tampilkan berbagai informasi bermanfaat selama pelatihan model.
- Grafik: Tunjukkan modelnya
- Histogram: Tampilkan bobot dengan histogram.
- Distribusi: Tampilkan distribusi beratnya
- Proyektor: Menunjukkan analisis komponen utama dan algoritma T-SNE. Teknik yang digunakan untuk pengurangan dimensi.
Selama tutorial TensorBoard ini, Anda akan melatih model sederhana. belajar mendalam model, dan grafik yang dihasilkannya dibaca dari bawah ke atas.
Jika Anda melihat grafik tersebut, Anda dapat memahami cara kerja model ini. Lencana bernomor pada tangkapan layar di bawah ini menandai keempat tahapan tersebut:
- Enqueue data ke model: Dorong sejumlah data yang sama dengan ukuran batch ke model, misalnya, Jumlah data feed setelah setiap iterasi
- Masukkan data ke Tensor
- Latih modelnya
- Menampilkan jumlah batch selama pelatihan. Simpan model pada disk.
Ide dasar di balik TensorBoard adalah bahwa jaringan saraf dapat berperilaku seperti kotak hitam, dan Anda membutuhkan alat untuk memeriksa apa yang ada di dalam kotak itu. Anggap saja TensorBoard sebagai senter untuk menyelami jaringan tersebut.
Ini membantu untuk memahami ketergantungan antar operasi, bagaimana bobot dihitung, menampilkan fungsi kerugian dan banyak informasi berguna lainnya. Saat Anda menyatukan semua informasi ini, Anda memiliki alat hebat untuk melakukan debug dan menemukan cara meningkatkan model.
Untuk memberi Anda gambaran tentang betapa bermanfaatnya grafik TensorBoard, lihatlah dua kurva kerugian di bawah ini:
Jaringan saraf menentukan cara menghubungkan berbagai neuron dan berapa banyak lapisan yang dibutuhkan sebelum model dapat memprediksi suatu hasil. Setelah arsitektur ditentukan, Anda tidak hanya perlu melatih model tetapi juga metrik yang mengukur akurasi prediksi. Metrik tersebut disebut fungsi kerugian (loss function), dan tujuannya adalah untuk meminimalkannya, yang berarti model membuat lebih sedikit kesalahan.
Setiap algoritma pelatihan mengulangi komputasi berkali-kali hingga kerugian mencapai garis yang lebih datar. Meminimalkan kerugian juga membutuhkan laju pembelajaran, yaitu kecepatan model belajar. Jika laju pembelajaran diatur terlalu tinggi, model tidak akan pernah punya waktu untuk mempelajari apa pun: itulah grafik sebelah kiri, di mana garis bergerak naik turun karena model pada dasarnya hanya menebak. Grafik di sebelah kanan menunjukkan kerugian menurun selama iterasi hingga kurva mendatar, yang berarti model telah menemukan solusi.
TensorBoard adalah alat yang hebat untuk memvisualisasikan metrik tersebut dan menyoroti potensi masalah. Jaringan saraf dapat membutuhkan waktu berjam-jam atau berminggu-minggu sebelum menemukan solusi, dan TensorBoard memperbarui metrik saat proses masih berjalan. Oleh karena itu, Anda tidak perlu menunggu hingga akhir untuk melihat apakah model dilatih dengan benar: buka TensorBoard, periksa bagaimana pelatihan berjalan, dan lakukan perubahan yang sesuai jika perlu.
Bagaimana Cara Menggunakan TensorBoard?
Di bagian ini, Anda akan mempelajari cara membuka TensorBoard dari terminal. macOS dan dari baris perintah pada WindowsFokus di sini adalah alatnya, bukan modelnya, jadi kode pelatihannya sengaja dibuat sesingkat mungkin.
Pertama, Anda perlu mengimpor pustaka yang akan Anda gunakan selama pelatihan.
## Import the library import tensorflow as tf import numpy as np
Anda membuat data tersebut. Data tersebut berupa array dengan 10000 baris dan 5 kolom.
X_train = (np.random.sample((10000,5))) y_train = (np.random.sample((10000,1))) X_train.shape
Keluaran
(10000, 5)
Kode di bawah ini mengubah data dan membuat model.
Perhatikan bahwa laju pembelajaran sama dengan 0.1. Jika Anda mengubah laju ini ke nilai yang lebih tinggi, model tidak akan menemukan solusi. Inilah yang terjadi di sisi kiri gambar di atas.
Contoh ini menggunakan estimator TensorFlow, API tingkat tinggi yang membungkus komputasi matematika. Estimator termasuk dalam API TensorFlow 1.x, jadi kedua cuplikan kode di bawah ini berjalan di bawah instalasi 1.x atau melalui tf.compat.v1 ruang nama.
Untuk membuat file log, Anda perlu menentukan jalurnya. Ini dilakukan dengan argumen tersebut. model_dir.
Dalam contoh TensorBoard di bawah ini, Anda menyimpan model di dalam direktori kerja, yaitu, tempat Anda menyimpan notebook atau Python berkas. Di dalam jalur ini, TensorFlow akan membuat folder bernama train dengan folder anak bernama linreg.
feature_columns = [
tf.feature_column.numeric_column('x', shape=X_train.shape[1:])]
DNN_reg = tf.estimator.DNNRegressor(feature_columns=feature_columns,
# Indicate where to store the log file
model_dir='train/linreg',
hidden_units=[500, 300],
optimizer=tf.train.ProximalAdagradOptimizer(
learning_rate=0.1,
l1_regularization_strength=0.001
)
)
Keluaran
INFO:tensorflow:Using default config.
INFO:tensorflow:Using config: {'_model_dir': 'train/linreg', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': None, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_service': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x1818e63828>, '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}
Langkah terakhir dari contoh visualisasi grafik TensorFlow ini terdiri dari melatih model. Selama pelatihan, TensorFlow menulis informasi ke dalam direktori model.
# Train the estimator train_input = tf.estimator.inputs.numpy_input_fn( x={"x": X_train}, y=y_train, shuffle=False,num_epochs=None) DNN_reg.train(train_input,steps=3000)
Keluaran
INFO:tensorflow:Calling model_fn. INFO:tensorflow:Done calling model_fn. INFO:tensorflow:Create CheckpointSaverHook. INFO:tensorflow:Graph was finalized. INFO:tensorflow:Running local_init_op. INFO:tensorflow:Done running local_init_op. INFO:tensorflow:Saving checkpoints for 1 into train/linreg/model.ckpt. INFO:tensorflow:loss = 40.060104, step = 1 INFO:tensorflow:global_step/sec: 197.061 INFO:tensorflow:loss = 10.62989, step = 101 (0.508 sec) INFO:tensorflow:global_step/sec: 172.487 INFO:tensorflow:loss = 11.255318, step = 201 (0.584 sec) INFO:tensorflow:global_step/sec: 193.295 INFO:tensorflow:loss = 10.604872, step = 301 (0.513 sec) INFO:tensorflow:global_step/sec: 175.378 INFO:tensorflow:loss = 10.090343, step = 401 (0.572 sec) INFO:tensorflow:global_step/sec: 209.737 INFO:tensorflow:loss = 10.057928, step = 501 (0.476 sec) INFO:tensorflow:global_step/sec: 171.646 INFO:tensorflow:loss = 10.460144, step = 601 (0.583 sec) INFO:tensorflow:global_step/sec: 192.269 INFO:tensorflow:loss = 10.529617, step = 701 (0.519 sec) INFO:tensorflow:global_step/sec: 198.264 INFO:tensorflow:loss = 9.100082, step = 801 (0.504 sec) INFO:tensorflow:global_step/sec: 226.842 INFO:tensorflow:loss = 10.485607, step = 901 (0.441 sec) INFO:tensorflow:global_step/sec: 152.929 INFO:tensorflow:loss = 10.052481, step = 1001 (0.655 sec) INFO:tensorflow:global_step/sec: 166.745 INFO:tensorflow:loss = 11.320213, step = 1101 (0.600 sec) INFO:tensorflow:global_step/sec: 161.854 INFO:tensorflow:loss = 9.603306, step = 1201 (0.619 sec) INFO:tensorflow:global_step/sec: 179.074 INFO:tensorflow:loss = 11.110269, step = 1301 (0.556 sec) INFO:tensorflow:global_step/sec: 202.776 INFO:tensorflow:loss = 11.929443, step = 1401 (0.494 sec) INFO:tensorflow:global_step/sec: 144.161 INFO:tensorflow:loss = 11.951693, step = 1501 (0.694 sec) INFO:tensorflow:global_step/sec: 154.144 INFO:tensorflow:loss = 8.620987, step = 1601 (0.649 sec) INFO:tensorflow:global_step/sec: 151.094 INFO:tensorflow:loss = 10.666125, step = 1701 (0.663 sec) INFO:tensorflow:global_step/sec: 193.644 INFO:tensorflow:loss = 11.0349865, step = 1801 (0.516 sec) INFO:tensorflow:global_step/sec: 189.707 INFO:tensorflow:loss = 9.860596, step = 1901 (0.526 sec) INFO:tensorflow:global_step/sec: 176.423 INFO:tensorflow:loss = 10.695, step = 2001 (0.567 sec) INFO:tensorflow:global_step/sec: 213.066 INFO:tensorflow:loss = 10.426752, step = 2101 (0.471 sec) INFO:tensorflow:global_step/sec: 220.975 INFO:tensorflow:loss = 10.594796, step = 2201 (0.452 sec) INFO:tensorflow:global_step/sec: 219.289 INFO:tensorflow:loss = 10.4212265, step = 2301 (0.456 sec) INFO:tensorflow:global_step/sec: 215.123 INFO:tensorflow:loss = 9.668612, step = 2401 (0.465 sec) INFO:tensorflow:global_step/sec: 175.65 INFO:tensorflow:loss = 10.009649, step = 2501 (0.569 sec) INFO:tensorflow:global_step/sec: 206.962 INFO:tensorflow:loss = 10.477722, step = 2601 (0.483 sec) INFO:tensorflow:global_step/sec: 229.627 INFO:tensorflow:loss = 9.877638, step = 2701 (0.435 sec) INFO:tensorflow:global_step/sec: 195.792 INFO:tensorflow:loss = 10.274586, step = 2801 (0.512 sec) INFO:tensorflow:global_step/sec: 176.803 INFO:tensorflow:loss = 10.061047, step = 2901 (0.566 sec) INFO:tensorflow:Saving checkpoints for 3000 into train/linreg/model.ckpt. INFO:tensorflow:Loss for final step: 10.73032. <tensorflow.python.estimator.canned.dnn.DNNRegressor at 0x1818e63630>
Pada TensorFlow 2, tugas yang sama dilakukan oleh callback Keras TensorBoard, yang menulis grafik dan metrik per-epoch tanpa kode estimator apa pun:
logdir = "logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S") tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir) model.fit(train_images, train_labels, epochs=5, callbacks=[tensorboard_callback])
Setelah proses selesai, direktori log akan menyimpan file checkpoint, sebuah graph.pbtxt berkas dan satu atau lebih events.out.tfevents berkas — persis seperti yang dibaca TensorBoard.
Untuk macOS Pengguna
Tampilan Finder di bawah ini menunjukkan folder train/linreg baru yang dibuat di dalam direktori kerja.
Untuk Windows Pengguna
On Windows File yang sama akan muncul di jalur yang Anda berikan ke model_dir, seperti yang disorot di bilah alamat.
Format berkas peristiwa yang sama dihasilkan oleh PyTorchJadi, dasbor ini tidak terbatas pada eksekusi TensorFlow saja.
Setelah Anda mencatat peristiwa log, Anda dapat membuka TensorBoard. TensorBoard secara default berjalan di port 6006 (Jupyter (menggunakan port 8888). Gunakan Terminal pada macOS atau perintah Anaconda pada Windows.
Untuk macOS Pengguna
# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!
Notebook tersebut tersimpan di jalur /Users/Guru99/tuto_TF
Untuk Windows Pengguna
cd C:\Users\Admin\Anaconda3 activate hello-tf
Buku catatan disimpan di jalur C:\Users\Admin\Anaconda3
Untuk menjalankan TensorBoard, jalankan perintah berikut dari direktori tersebut.
Untuk macOS Pengguna
tensorboard --logdir=./train/linreg
Untuk Windows Pengguna
tensorboard --logdir=.\train\linreg
TensorBoard kemudian diakses di http://localhost:6006
| Bendera | Apa yang dikendalikannya |
|---|---|
--logdir |
Direktori yang menyimpan file acara. Ini adalah satu-satunya flag yang wajib diisi. |
--port |
Port yang akan digunakan untuk melayani. Nilai default adalah 6006; ubah jika sesi sebelumnya masih menggunakan port tersebut. |
--bind_all |
Dapat diakses di setiap antarmuka jaringan. TensorBoard secara default hanya terhubung ke localhost, jadi akses jarak jauh memerlukan flag ini, dan flag ini tidak dapat dikombinasikan dengan --host. |
--reload_interval |
Seberapa sering, dalam hitungan detik, direktori log dipindai ulang untuk mencari data baru. |
--logdir_spec |
Alternatif lama yang menerima beberapa jalur yang dipisahkan koma; --logdir Tidak lagi mendukung formulir tersebut. |
The tensorboard dev Subperintah tersebut tidak lagi berfungsi: layanan TensorBoard.dev yang dihosting telah ditutup pada 1 Januari 2024. Penggunaan lokal tidak terpengaruh.
Pada beberapa mesin, konsol mencetak nama host alih-alih localhost, seperti pada prompt Anaconda di bawah ini. Kedua alamat tersebut membuka dasbor yang sama.
Salin dan tempel alamat tersebut ke browser favorit Anda. Anda akan melihat dasbor Scalars seperti yang ditunjukkan di bawah ini.
Jika Anda melihat sesuatu seperti ini:
Artinya TensorBoard tidak dapat menemukan file log. Pastikan Anda mengarahkannya ke... cd ke jalur yang benar, atau periksa kembali apakah peristiwa log benar-benar telah dibuat. Jika belum, jalankan kembali kode pelatihan.
Jika Anda ingin menutup TensorBoard, tekan CTRL+C di jendela terminal.
Saran: periksa prompt Anaconda Anda untuk mengetahui direktori kerja saat ini.
Pada tangkapan layar di atas, perintah tersebut berada di C:\Users\Admin, jadi file log harus dibuat di folder tersebut.










