דף זה תורגם על ידי Cloud Translation API.
Switch to English

בחינת גרף TensorFlow

צפה ב TensorFlow.org הפעל ב- Google Colab צפה במקור ב- GitHub

סקירה כללית

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

מדריך זה מציג סקירה מהירה כיצד לייצר נתונים לאבחון גרפים ולהמחיש אותם בלוח המחוונים של גרפי TensorBoard. תגדיר ואמן מודל פשוט של רצף Keras עבור מערך הנתונים של 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/ 
 

הגדירו דגם של Keras

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

 # 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
 

הרכבת הדגם ונתוני היומן

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

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

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

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

גרף רעיוני

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

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


גרפים של פונקציות tf.

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

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

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

  • הגדר tf.function פונקציה באמצעות 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. לחץ על לחצן הרדיו "פרופיל" כדי לראות נתונים סטטיסטיים על זיכרון CPU.