TensorFlow Grafiğinin İncelenmesi

TensorFlow.org'da görüntüleyin Google Colab'da çalıştırın Kaynağı GitHub'da görüntüleyin Not defterini indir

genel bakış

TensorBoard en Grafikler gösterge tablosu, TensorFlow modelini incelemek için güçlü bir araçtır. Modelinizin yapısının kavramsal bir grafiğini hızlı bir şekilde görüntüleyebilir ve istediğiniz tasarıma uygun olduğundan emin olabilirsiniz. Ayrıca TensorFlow'un programınızı nasıl anladığını anlamak için işlem düzeyinde bir grafiği de görüntüleyebilirsiniz. Operasyon düzeyinde grafiği incelemek, modelinizi nasıl değiştireceğiniz konusunda size fikir verebilir. Örneğin, eğitim beklenenden daha yavaş ilerliyorsa modelinizi yeniden tasarlayabilirsiniz.

Bu öğretici, grafik tanı verilerinin nasıl oluşturulacağına ve TensorBoard'un Grafikler panosunda nasıl görselleştirileceğine ilişkin hızlı bir genel bakış sunar. Fashion-MNIST veri seti için basit bir Keras Sıralı modeli tanımlayacak ve eğitecek ve model grafiklerinizi nasıl günlüğe kaydedip inceleyeceğinizi öğreneceksiniz. Ayrıca yeni kullanılarak oluşturulan fonksiyonlar için grafik verilerini oluşturmak için bir izleme API kullanacağız tf.function ek açıklama.

Kurmak

# 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/

Bir Keras modeli tanımlayın

Bu örnekte, sınıflandırıcı basit bir dört katmanlı Sıralı modeldir.

# 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'])

Eğitim verilerini indirin ve hazırlayın.

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

Modeli ve günlük verilerini eğitin

Tedavi öncesi tanımlamak Keras TensorBoard geri arama günlük dizini belirterek,. Bu geri aramayı Model.fit()'e ileterek, TensorBoard'da görselleştirme için grafik verilerinin günlüğe kaydedilmesini sağlarsınız.

# 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>

Operasyon düzeyinde grafik

TensorBoard'u başlatın ve kullanıcı arayüzünün yüklenmesi için birkaç saniye bekleyin. En üstteki "Grafikler"e dokunarak Grafikler panosunu seçin.

%tensorboard --logdir logs

Barındırılan, paylaşılabilir bir deney oluşturmak için isteğe bağlı olarak TensorBoard.dev'i de kullanabilirsiniz.

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

Varsayılan olarak, TensorBoard op düzey grafik görüntüler. (Solda, “Varsayılan” etiketinin seçili olduğunu görebilirsiniz.) Grafiğin ters çevrildiğini unutmayın; veriler aşağıdan yukarıya doğru akar, bu nedenle koda kıyasla baş aşağıdır. Bununla birlikte, grafiğin Keras model tanımıyla yakından eşleştiğini ve diğer hesaplama düğümlerine fazladan kenarlar olduğunu görebilirsiniz.

Grafikler genellikle çok büyüktür, bu nedenle grafik görselleştirmesini değiştirebilirsiniz:

  • Kaydırma ve dışarı yakınlaştırmak için
  • Tavaya sürükleyin
  • İle çift tıklayarak düğümü genişleme (bir düğüm diğer düğümler için bir kap olabilir) geçiş yapar

Bir düğüme tıklayarak meta verileri de görebilirsiniz. Bu, girdileri, çıktıları, şekilleri ve diğer ayrıntıları görmenizi sağlar.

kavramsal grafik

Yürütme grafik ek olarak, TensorBoard da kavramsal grafiği gösterir. Bu sadece Keras modelinin bir görünümüdür. Kaydedilmiş bir modeli yeniden kullanıyorsanız ve yapısını incelemek veya doğrulamak istiyorsanız bu yararlı olabilir.

Kavramsal grafiği görmek için “keras” etiketini seçin. Bu örnekte, bir daraltılmış Sıralı düğümü göreceksiniz. Modelin yapısını görmek için düğüme çift tıklayın:


tf.functions grafikleri

Şimdiye kadarki örnekler, Keras katmanlarını tanımlayarak ve Model.fit()'i çağırarak grafiklerin oluşturulduğu Keras modellerinin grafiklerini tanımladı.

Kullanmak gereken yere bir durumla karşılaşabilirsiniz tf.function için ek açıklama "imza" yüksek performanslı TensorFlow grafiğinin içine, bir Python hesaplama fonksiyonu dönüşümü, yani. Bu durumlar için, TensorBoard içinde görselleştirme için imzalı fonksiyonları günlüğe TensorFlow Özeti İz API kullanmak.

Özet İzleme API'sini kullanmak için:

  • Tanımlama ve sahip bir işlev açıklama tf.function
  • Kullanın tf.summary.trace_on() hemen işlev çağrısı sitenin önüne.
  • Geçirerek grafiğe profil bilgileri (bellek, işlemci zaman) ilave profiler=True
  • Bir Özet dosyası yazar, çağrı ile tf.summary.trace_export() günlük verileri kaydetmek

Ardından, işlevinizin nasıl davrandığını görmek için TensorBoard'u kullanabilirsiniz.

# 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

Artık işlevinizin yapısını TensorBoard tarafından anlaşıldığı gibi görebilirsiniz. CPU ve bellek istatistiklerini görmek için "Profil" radyo düğmesine tıklayın.