בחינת גרף TensorFlow

הצג באתר TensorFlow.org הפעל בגוגל קולאב צפה במקור ב-GitHub הורד מחברת

סקירה כללית

לוח המחוונים גרפים של TensorBoard הוא כלי רב עוצמה לבחינת מודל TensorFlow שלך. אתה יכול להציג במהירות גרף רעיוני של מבנה הדגם שלך ולוודא שהוא תואם את העיצוב המיועד שלך. אתה יכול גם להציג גרף ברמת ההפעלה כדי להבין כיצד TensorFlow מבין את התוכנית שלך. בחינת הגרף ברמת הפעילות יכולה לתת לך תובנה כיצד לשנות את המודל שלך. לדוגמה, אתה יכול לעצב מחדש את המודל שלך אם האימון מתקדם לאט מהצפוי.

מדריך זה מציג סקירה מהירה כיצד ליצור נתוני אבחון גרפים ולהמחיש אותם בלוח המחוונים הגרפים של TensorBoard. אתה תגדיר ותאמן מודל פשוט של Keras Sequential עבור מערך הנתונים של Fashion-MNIST ותלמד כיצד לרשום ולבחון את גרפי המודל שלך. כמו כן, תוכל להשתמש ב- API התחקות להפיק נתונים גרף עבור פונקציות נוצרו באמצעות החדש tf.function ביאור.

להכין

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

הגדירו דגם של קרס

בדוגמה זו, המסווגן הוא מודל פשוט של ארבע שכבות Sequential.

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

הורד והכן את נתוני ההדרכה.

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

אימון המודל ונתוני יומן

לפני אימון, להגדיר את התקשרות Keras TensorBoard , המפרט את ספריית היומן. על ידי העברת התקשרות חוזרת זו ל-Model.fit(), אתה מבטיח שנתוני גרף נרשמים להדמיה ב-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>

גרף ברמת אופ

הפעל את TensorBoard והמתן מספר שניות לטעינת ממשק המשתמש. בחר את לוח המחוונים של גרפים על ידי הקשה על "גרפים" בחלק העליון.

%tensorboard --logdir logs

ניתן גם להשתמש ב-TensorBoard.dev באופן אופציונלי כדי ליצור ניסוי מתארח שניתן לשיתוף.

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

כברירת מחדל, TensorBoard מציג את הגרף אופ-רמה. (בצד שמאל, אתה יכול לראות את התג "ברירת מחדל" שנבחר.) שימו לב שהגרף הפוך; הנתונים זורמים מלמטה למעלה, אז זה הפוך בהשוואה לקוד. עם זאת, אתה יכול לראות שהגרף תואם היטב את הגדרת המודל של Keras, עם קצוות נוספים לצמתי חישוב אחרים.

גרפים הם לרוב גדולים מאוד, אז אתה יכול לתפעל את הדמיית הגרף:

  • גלול להתקרב ולהתרחק
  • גרור כדי לסובב
  • לחיצה כפולה מחליפה הרחבת הצומת (צומת יכול להיות מיכל עבור צמתים אחרים)

אתה יכול גם לראות מטא נתונים על ידי לחיצה על צומת. זה מאפשר לך לראות תשומות, פלטים, צורות ופרטים אחרים.

גרף מושגי

בנוסף בגרף ביצוע, TensorBoard גם מציג גרף מושגית. זהו תצוגה של דגם Keras בלבד. זה עשוי להיות שימושי אם אתה עושה שימוש חוזר במודל שמור וברצונך לבחון או לאמת את המבנה שלו.

כדי לראות את הגרף הרעיוני, בחר בתג "keras". לדוגמא זו, תראה צומת סדרתית התמוטטה. לחץ פעמיים על הצומת כדי לראות את מבנה המודל:


גרפים של tf.functions

הדוגמאות עד כה תיארו גרפים של מודלים של Keras, כאשר הגרפים נוצרו על ידי הגדרת שכבות Keras וקריאה ל-Model.fit().

אתה עלול להיתקל במצב שבו אתה צריך להשתמש tf.function הסבר ל "חתימה" , כלומר, להפוך, פונקצית חישוב Python לתוך גרף TensorFlow בעל ביצועים גבוהים. במצבים אלה, אתה משתמש ב- API Trace סיכום TensorFlow להיכנס פונקציות חתומים עבור להדמיה ב TensorBoard.

כדי להשתמש ב-Summary Trace API:

  • גדר ותסמן פונקציה עם tf.function
  • השתמש tf.summary.trace_on() מייד לפני אתר הקריאה לפונקציה שלך.
  • להוסיף את פרטי הפרופיל (זיכרון, זמן מעבד) כדי הגרף על ידי העברת profiler=True
  • עם סופר קובץ סיכום, שיחת tf.summary.trace_export() כדי להציל את נתוני יומן

לאחר מכן תוכל להשתמש ב- TensorBoard כדי לראות כיצד הפונקציה שלך מתנהגת.

# 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

כעת אתה יכול לראות את מבנה הפונקציה שלך כפי שהובנה על ידי TensorBoard. לחץ על כפתור הרדיו "פרופיל" כדי לראות נתונים סטטיסטיים של מעבד וזיכרון.