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.