Memeriksa Grafik TensorFlow

Lihat di TensorFlow.org Jalankan di Google Colab Lihat sumber di GitHub Unduh buku catatan

Ringkasan

TensorBoard ini Grafik dashboard adalah alat yang ampuh untuk memeriksa model yang TensorFlow Anda. Anda dapat dengan cepat melihat grafik konseptual struktur model Anda dan memastikannya sesuai dengan desain yang Anda inginkan. Anda juga dapat melihat grafik op-level untuk memahami bagaimana TensorFlow memahami program Anda. Memeriksa grafik op-level dapat memberi Anda wawasan tentang cara mengubah model Anda. Misalnya, Anda dapat mendesain ulang model Anda jika pelatihan berjalan lebih lambat dari yang diharapkan.

Tutorial ini menyajikan ikhtisar singkat tentang cara membuat data diagnostik grafik dan memvisualisasikannya di dasbor Grafik TensorBoard. Anda akan menentukan dan melatih model Keras Sequential sederhana untuk dataset Fashion-MNIST dan mempelajari cara mencatat dan memeriksa grafik model Anda. Anda juga akan menggunakan API tracing untuk menghasilkan data grafik untuk fungsi dibuat menggunakan baru tf.function penjelasan.

Mempersiapkan

# Load the TensorBoard notebook extension.
%load_ext tensorboard
from datetime import datetime
from packaging import version

import tensorflow as tf
from tensorflow import keras

print("TensorFlow version: ", tf.__version__)
assert version.parse(tf.__version__).release[0] >= 2, \
    "This notebook requires TensorFlow 2.0 or above."
TensorFlow version:  2.2.0
import tensorboard
tensorboard.__version__
'2.2.1'
# Clear any logs from previous runs
rm -rf ./logs/

Tentukan model Keras

Dalam contoh ini, pengklasifikasi adalah model Sequential empat lapis sederhana.

# Define the model.
model = keras.models.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(32, activation='relu'),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(10, activation='softmax')
])

model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy'])

Unduh dan siapkan data pelatihan.

(train_images, train_labels), _ = keras.datasets.fashion_mnist.load_data()
train_images = train_images / 255.0

Latih model dan log data

Sebelum pelatihan, menentukan callback Keras TensorBoard , menentukan direktori log. Dengan meneruskan callback ini ke Model.fit(), Anda memastikan bahwa data grafik dicatat untuk visualisasi di TensorBoard.

# Define the Keras TensorBoard callback.
logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)

# Train the model.
model.fit(
    train_images,
    train_labels, 
    batch_size=64,
    epochs=5, 
    callbacks=[tensorboard_callback])
Epoch 1/5
938/938 [==============================] - 2s 2ms/step - loss: 0.6955 - accuracy: 0.7618
Epoch 2/5
938/938 [==============================] - 2s 2ms/step - loss: 0.4877 - accuracy: 0.8296
Epoch 3/5
938/938 [==============================] - 2s 2ms/step - loss: 0.4458 - accuracy: 0.8414
Epoch 4/5
938/938 [==============================] - 2s 2ms/step - loss: 0.4246 - accuracy: 0.8476
Epoch 5/5
938/938 [==============================] - 2s 2ms/step - loss: 0.4117 - accuracy: 0.8508
<tensorflow.python.keras.callbacks.History at 0x7f656ecc3fd0>

Grafik tingkat op

Mulai TensorBoard dan tunggu beberapa detik hingga UI dimuat. Pilih dasbor Grafik dengan mengetuk "Grafik" di bagian atas.

%tensorboard --logdir logs

Anda juga dapat menggunakan TensorBoard.dev secara opsional untuk membuat eksperimen yang dihosting dan dapat dibagikan.

!tensorboard dev upload \
  --logdir logs \
  --name "Sample op-level graph" \
  --one_shot

Secara default, TensorBoard menampilkan grafik op-tingkat. (Di sebelah kiri, Anda dapat melihat tag “Default” dipilih.) Perhatikan bahwa grafiknya terbalik; data mengalir dari bawah ke atas, jadi terbalik dibandingkan dengan kode. Namun, Anda dapat melihat bahwa grafik sangat cocok dengan definisi model Keras, dengan tepi ekstra ke node komputasi lainnya.

Grafik seringkali sangat besar, sehingga Anda dapat memanipulasi visualisasi grafik:

  • Gulir untuk memperbesar dan keluar
  • Drag ke pan
  • Mengklik ganda matikan ekspansi simpul (node dapat menjadi wadah untuk node lain)

Anda juga dapat melihat metadata dengan mengklik sebuah node. Ini memungkinkan Anda untuk melihat input, output, bentuk, dan detail lainnya.

Grafik konseptual

Selain grafik eksekusi, TensorBoard juga menampilkan grafik konseptual. Ini adalah tampilan model Keras saja. Ini mungkin berguna jika Anda menggunakan kembali model yang disimpan dan Anda ingin memeriksa atau memvalidasi strukturnya.

Untuk melihat grafik konseptual, pilih tag “keras”. Untuk contoh ini, Anda akan melihat simpul Sequential runtuh. Klik dua kali node untuk melihat struktur model:


Grafik fungsi tf

Contoh-contoh sejauh ini telah menjelaskan grafik model Keras, di mana grafik telah dibuat dengan mendefinisikan lapisan Keras dan memanggil Model.fit().

Anda mungkin menghadapi situasi di mana Anda perlu menggunakan tf.function penjelasan untuk "tanda tangan" , yaitu, mengubah, fungsi perhitungan Python menjadi grafik TensorFlow kinerja tinggi. Untuk situasi ini, Anda menggunakan TensorFlow Ringkasan Jejak API untuk log fungsi ditandatangani untuk visualisasi di TensorBoard.

Untuk menggunakan API Jejak Ringkasan:

  • Mendefinisikan dan membubuhi keterangan fungsi dengan tf.function
  • Gunakan tf.summary.trace_on() segera sebelum situs fungsi panggilan Anda.
  • Tambahkan informasi profil (memori, CPU time) untuk grafik dengan melewati profiler=True
  • Dengan penulis Ringkasan berkas, panggilan tf.summary.trace_export() untuk menyimpan data log

Anda kemudian dapat menggunakan TensorBoard untuk melihat bagaimana fungsi Anda berperilaku.

# The function to be traced.
@tf.function
def my_func(x, y):
  # A simple hand-rolled layer.
  return tf.nn.relu(tf.matmul(x, y))

# Set up logging.
stamp = datetime.now().strftime("%Y%m%d-%H%M%S")
logdir = 'logs/func/%s' % stamp
writer = tf.summary.create_file_writer(logdir)

# Sample data for your function.
x = tf.random.uniform((3, 3))
y = tf.random.uniform((3, 3))

# Bracket the function call with
# tf.summary.trace_on() and tf.summary.trace_export().
tf.summary.trace_on(graph=True, profiler=True)
# Call only one tf.function when tracing.
z = my_func(x, y)
with writer.as_default():
  tf.summary.trace_export(
      name="my_func_trace",
      step=0,
      profiler_outdir=logdir)
%tensorboard --logdir logs/func

Anda sekarang dapat melihat struktur fungsi Anda seperti yang dipahami oleh TensorBoard. Klik tombol radio "Profil" untuk melihat statistik CPU dan memori.