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.

  • 🔘 Lima dasbor: Skalar, Grafik, Distribusi, Histogram, dan Proyektor masing-masing membaca jenis ringkasan yang berbeda.
  • ☑️ Direktori log: Argumen model_dir menentukan di mana TensorFlow menulis file events.out.tfevents.
  • ✅ Perintah peluncuran: Jalankan tensorboard –logdir=PATH, lalu buka http://localhost:6006 di browser apa pun.
  • 🧪 Tingkat pembelajaran: Kurva kerugian yang bergerigi menandakan tingkat yang terlalu tinggi bagi model untuk konvergen.
  • ️ TensorFlow 2: Fungsi callback Keras TensorBoard menggantikan pencatatan estimator yang ditunjukkan pada contoh aslinya.
  • ⚠️ Penyelesaian masalah: Dasbor yang kosong hampir selalu berarti jalur direktori log tidak sesuai dengan proses pelatihan.

Tutorial TensorBoard: Visualisasi Grafik TensorFlow

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:

Dasbor TensorBoard Scalars yang menampilkan kurva average_loss dari regressor DNN yang telah dilatih.

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.

Bilah navigasi TensorBoard dengan tab Skalar, Grafik, Distribusi, Histogram, dan Proyektor.

  • 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:

  1. Enqueue data ke model: Dorong sejumlah data yang sama dengan ukuran batch ke model, misalnya, Jumlah data feed setelah setiap iterasi
  2. Masukkan data ke Tensor
  3. Latih modelnya
  4. Menampilkan jumlah batch selama pelatihan. Simpan model pada disk.

Grafik TensorFlow di TensorBoard dengan node bernomor untuk antrian input, blok dnn, dan operasi penyimpanan.

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:

Dua kurva kerugian TensorBoard berdampingan membandingkan model yang tidak belajar dengan model yang konvergen.

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: {&#x27;_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.

macOS Daftar file yang menampilkan folder log train dan linreg beserta file checkpoint, events, dan graph.pbtxt.

Untuk Windows Pengguna

On Windows File yang sama akan muncul di jalur yang Anda berikan ke model_dir, seperti yang disorot di bilah alamat.

Windows Tampilan penjelajah folder train linreg yang berisi file event dan checkpoint TensorFlow.

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.

Anaconda prompt menjalankan perintah tensorboard dan mencetak alamat server pada port 6006.

Salin dan tempel alamat tersebut ke browser favorit Anda. Anda akan melihat dasbor Scalars seperti yang ditunjukkan di bawah ini.

Dasbor TensorBoard Scalars terbuka di browser setelah direktori log berhasil dimuat.

Jika Anda melihat sesuatu seperti ini:

Halaman kesalahan TensorBoard berbunyi: Tidak ditemukan file definisi grafik.

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.

Prompt Anaconda yang menampilkan lingkungan hello-tf aktif dan direktori kerja saat ini.

Pada tangkapan layar di atas, perintah tersebut berada di C:\Users\Admin, jadi file log harus dibuat di folder tersebut.

Pertanyaan Umum Demo Slot

Setelah proses pelatihan selesai, akan tersisa indeks checkpoint, satu atau lebih file model.ckpt, file graph.pbtxt, dan setidaknya satu file events.out.tfevents. TensorBoard hanya membaca file event; checkpoint ada agar pelatihan dapat dilanjutkan dari titik terakhir berhenti.

Ya. PyTorch Ringkasan pengirimanWriter yang menghasilkan format file peristiwa yang sama, sehingga perintah tensorboard –logdir yang identik akan menampilkan dasbor. Tidak ada yang berubah pada server — hanya pustaka yang menghasilkan ringkasan.

Tidak. Layanan yang dihosting ditutup pada 1 Januari 2024 dan subperintah tensorboard dev sekarang mengembalikan kesalahan. Bagikan hasilnya dengan menjalankan TensorBoard di dalam notebook seperti Google Colab, atau dengan mengekspor grafik sebagai CSV atau JSON.

Berikan setiap run subfolder tersendiri di bawah induk yang sama, lalu arahkan –logdir ke induk tersebut. Setiap subfolder akan muncul sebagai run terpisah di panel sebelah kiri, dan kurva akan digambar pada sumbu yang sama dengan kotak centang masing-masing.

Grafik tingkat operasi adalah tampilan default dan menunjukkan bagaimana TensorFlow memahami program, yang digambar dari bawah ke atas. Memilih tag keras akan beralih ke grafik konseptual, yang hanya menunjukkan lapisan model dan lebih mudah untuk diperiksa terhadap desain Anda.

Pemindaian otomatis menghasilkan puluhan percobaan sekaligus, sehingga dasbor menjadi alat perbandingan daripada monitor satu percobaan. Plugin HParams mencatat setiap konfigurasi beserta metriknya, memungkinkan Anda mengurutkan percobaan alih-alih membaca kurva satu per satu.

Kopilot GitHub Menyusun draf kode boilerplate untuk callback dan summary-writer dengan cepat. Perlakukan outputnya sebagai draf: seringkali mencampur API TensorFlow 1.x dan 2.x, jadi periksa setiap nama terhadap dokumentasi terbaru sebelum menjalankan kode.

Entah tidak ada file peristiwa yang ditulis atau jalur yang diberikan ke –logdir tidak sesuai dengan yang digunakan oleh pekerjaan pelatihan. Konfirmasikan bahwa file events.out.tfevents ada di folder tersebut, dan pada Windows Jalankan TensorBoard dari huruf drive yang sama.

Ringkaslah postingan ini dengan: