امروز برای رویداد محلی TensorFlow خود در همه جا پاسخ دهید!
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

با TensorBoard شروع کنید

مشاهده در TensorFlow.org در Google Colab اجرا کنید مشاهده منبع در GitHub

در یادگیری ماشینی ، برای بهبود چیزی که غالباً باید بتوانید آن را بسنجید. TensorBoard ابزاری برای تهیه اندازه گیری ها و تجسم های مورد نیاز در جریان کار یادگیری ماشین است. این ردیابی معیارهای آزمایش مانند از دست دادن و دقت ، تجسم نمودار مدل ، پیش بینی جاسازی ها در فضای بعدی و سایر موارد را امکان پذیر می کند.

این شروع سریع نحوه شروع سریع کار با TensorBoard را نشان می دهد. راهنماهای باقی مانده در این وب سایت جزئیات بیشتری در مورد قابلیت های خاص را ارائه می دهند ، بسیاری از آنها در اینجا گنجانده نشده است.

# Load the TensorBoard notebook extension
%load_ext tensorboard
import tensorflow as tf
import datetime
# Clear any logs from previous runs
rm -rf ./logs/

با استفاده از مجموعه داده MNIST به عنوان مثال ، داده ها را عادی کرده و تابعی را بنویسید که یک مدل ساده Keras برای طبقه بندی تصاویر در 10 کلاس ایجاد کند.

mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

def create_model():
  return tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation='softmax')
  ])
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434 [==============================] - 0s 0us/step

استفاده از TensorBoard با Keras Model.fit ()

هنگام آموزش با Model.fit () Keras ، افزودن پاسخ tf.keras.callbacks.TensorBoard تضمین می کند که سیاهههای مربوط ایجاد و ذخیره می شوند. علاوه بر این ، محاسبه هیستوگرام را در هر دوره با histogram_freq=1 (این به طور پیش فرض خاموش است)

گزارش ها را در یک زیر شاخه دارای مهر زمان قرار دهید تا امکان انتخاب آسان تمرین های مختلف فراهم شود.

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

log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)

model.fit(x=x_train, 
          y=y_train, 
          epochs=5, 
          validation_data=(x_test, y_test), 
          callbacks=[tensorboard_callback])
Train on 60000 samples, validate on 10000 samples
Epoch 1/5
60000/60000 [==============================] - 15s 246us/sample - loss: 0.2217 - accuracy: 0.9343 - val_loss: 0.1019 - val_accuracy: 0.9685
Epoch 2/5
60000/60000 [==============================] - 14s 229us/sample - loss: 0.0975 - accuracy: 0.9698 - val_loss: 0.0787 - val_accuracy: 0.9758
Epoch 3/5
60000/60000 [==============================] - 14s 231us/sample - loss: 0.0718 - accuracy: 0.9771 - val_loss: 0.0698 - val_accuracy: 0.9781
Epoch 4/5
60000/60000 [==============================] - 14s 227us/sample - loss: 0.0540 - accuracy: 0.9820 - val_loss: 0.0685 - val_accuracy: 0.9795
Epoch 5/5
60000/60000 [==============================] - 14s 228us/sample - loss: 0.0433 - accuracy: 0.9862 - val_loss: 0.0623 - val_accuracy: 0.9823

<tensorflow.python.keras.callbacks.History at 0x7fc8a5ee02e8>

TensorBoard را از طریق خط فرمان یا در یک تجربه نوت بوک شروع کنید. این دو رابط به طور کلی یکسان هستند. در نوت بوک ها از %tensorboard magic استفاده کنید. در خط فرمان ، همان دستور را بدون "٪" اجرا کنید.

%tensorboard --logdir logs/fit

مروری کوتاه بر روی داشبورد نشان داده شده (برگه ها در نوار پیمایش بالا):

  • داشبورد Scalars نشان می دهد که چگونه ضرر و معیارها با هر دوره تغییر می کند. می توانید از آن برای ردیابی سرعت آموزش ، میزان یادگیری و سایر مقادیر مقیاس استفاده کنید.
  • داشبورد Graphs به شما کمک می کند مدل خود را تجسم کنید. در این حالت نمودار لایه های Keras نشان داده شده است که به شما کمک می کند تا از درست بودن آن اطمینان حاصل کنید.
  • داشبورد Distributions و Histograms توزیع یک Tensor را در طول زمان نشان می دهد. این می تواند برای تجسم وزنه ها و تعصبات و تأیید تغییر آنها به روشی مورد انتظار مفید باشد.

افزونه های اضافی TensorBoard هنگام ورود به سیستم انواع دیگر داده ها به طور خودکار فعال می شوند. به عنوان مثال ، تماس با Keras TensorBoard به شما امکان می دهد تصاویر و جاسازی ها را نیز ثبت کنید. با کلیک بر روی کشویی "غیرفعال" در سمت راست بالا می توانید سایر افزونه های موجود در TensorBoard را مشاهده کنید.

استفاده از TensorBoard با روش های دیگر

هنگام آموزش با روشهایی مانندtf.GradientTape() ، از tf.summary برای ثبت اطلاعات مورد نیاز استفاده کنید.

از مجموعه داده مشابه بالا استفاده کنید ، اما آن را بهtf.data.Dataset تبدیل کنید تا از قابلیت های دسته ای استفاده کنید:

train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
test_dataset = tf.data.Dataset.from_tensor_slices((x_test, y_test))

train_dataset = train_dataset.shuffle(60000).batch(64)
test_dataset = test_dataset.batch(64)

کد آموزش از آموزش پیشرفته شروع سریع پیروی می کند ، اما نحوه ورود معیارها به TensorBoard را نشان می دهد. از دست دادن و بهینه ساز را انتخاب کنید:

loss_object = tf.keras.losses.SparseCategoricalCrossentropy()
optimizer = tf.keras.optimizers.Adam()

معیارهای متغیری ایجاد کنید که بتواند برای جمع آوری مقادیر در حین آموزش استفاده شود و در هر نقطه از سیستم وارد شود:

# Define our metrics
train_loss = tf.keras.metrics.Mean('train_loss', dtype=tf.float32)
train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy('train_accuracy')
test_loss = tf.keras.metrics.Mean('test_loss', dtype=tf.float32)
test_accuracy = tf.keras.metrics.SparseCategoricalAccuracy('test_accuracy')

توابع آموزش و آزمون را تعریف کنید:

def train_step(model, optimizer, x_train, y_train):
  with tf.GradientTape() as tape:
    predictions = model(x_train, training=True)
    loss = loss_object(y_train, predictions)
  grads = tape.gradient(loss, model.trainable_variables)
  optimizer.apply_gradients(zip(grads, model.trainable_variables))

  train_loss(loss)
  train_accuracy(y_train, predictions)

def test_step(model, x_test, y_test):
  predictions = model(x_test)
  loss = loss_object(y_test, predictions)

  test_loss(loss)
  test_accuracy(y_test, predictions)

خلاصه نویسان را تنظیم کنید تا خلاصه ها را در دیسک سیاهههای مربوط به دیسک بنویسید:

current_time = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
train_log_dir = 'logs/gradient_tape/' + current_time + '/train'
test_log_dir = 'logs/gradient_tape/' + current_time + '/test'
train_summary_writer = tf.summary.create_file_writer(train_log_dir)
test_summary_writer = tf.summary.create_file_writer(test_log_dir)

آموزش را شروع کنید. از tf.summary.scalar() برای ثبت معیارها (از دست دادن و دقت) در حین آموزش / آزمایش در محدوده خلاصه نویسان برای نوشتن خلاصه ها روی دیسک استفاده کنید. شما می توانید معیارهای ورود به سیستم و تعداد دفعات انجام آن را کنترل کنید. سایر توابع tf.summary ثبت انواع دیگر داده ها را فعال می کند.

model = create_model() # reset our model

EPOCHS = 5

for epoch in range(EPOCHS):
  for (x_train, y_train) in train_dataset:
    train_step(model, optimizer, x_train, y_train)
  with train_summary_writer.as_default():
    tf.summary.scalar('loss', train_loss.result(), step=epoch)
    tf.summary.scalar('accuracy', train_accuracy.result(), step=epoch)

  for (x_test, y_test) in test_dataset:
    test_step(model, x_test, y_test)
  with test_summary_writer.as_default():
    tf.summary.scalar('loss', test_loss.result(), step=epoch)
    tf.summary.scalar('accuracy', test_accuracy.result(), step=epoch)

  template = 'Epoch {}, Loss: {}, Accuracy: {}, Test Loss: {}, Test Accuracy: {}'
  print (template.format(epoch+1,
                         train_loss.result(), 
                         train_accuracy.result()*100,
                         test_loss.result(), 
                         test_accuracy.result()*100))

  # Reset metrics every epoch
  train_loss.reset_states()
  test_loss.reset_states()
  train_accuracy.reset_states()
  test_accuracy.reset_states()
Epoch 1, Loss: 0.24321186542510986, Accuracy: 92.84333801269531, Test Loss: 0.13006582856178284, Test Accuracy: 95.9000015258789
Epoch 2, Loss: 0.10446818172931671, Accuracy: 96.84833526611328, Test Loss: 0.08867532759904861, Test Accuracy: 97.1199951171875
Epoch 3, Loss: 0.07096975296735764, Accuracy: 97.80166625976562, Test Loss: 0.07875105738639832, Test Accuracy: 97.48999786376953
Epoch 4, Loss: 0.05380449816584587, Accuracy: 98.34166717529297, Test Loss: 0.07712937891483307, Test Accuracy: 97.56999969482422
Epoch 5, Loss: 0.041443776339292526, Accuracy: 98.71833038330078, Test Loss: 0.07514958828687668, Test Accuracy: 97.5

دوباره TensorBoard را باز کنید ، این بار آن را به فهرست ورود به سیستم جدید هدایت کنید. ما همچنین می توانستیم TensorBoard را برای نظارت بر آموزش هنگام پیشرفت شروع کنیم.

%tensorboard --logdir logs/gradient_tape

خودشه! شما اکنون نحوه استفاده از TensorBoard را هم از طریق فراخوانی Keras و هم از طریق tf.summary برای سناریوهای سفارشی بیشتر مشاهده کرده اید.

TensorBoard.dev: نتایج آزمایش ML خود را میزبانی و به اشتراک بگذارید

TensorBoard.dev یک سرویس عمومی رایگان است که به شما امکان می دهد سیاهههای مربوط به TensorBoard خود را بارگذاری کرده و پیوند همیشگی دریافت کنید که می تواند با همه در مقالات دانشگاهی ، پست های وبلاگ ، رسانه های اجتماعی و غیره به اشتراک گذاشته شود. این می تواند قابلیت تکرار و همکاری بهتر را فراهم کند.

برای استفاده از TensorBoard.dev ، دستور زیر را اجرا کنید:

!tensorboard dev upload \
  --logdir logs/fit \
  --name "(optional) My latest experiment" \
  --description "(optional) Simple comparison of several hyperparameters" \
  --one_shot

توجه داشته باشید که این فراخوانی به جای فراخوانی درصد ( % ) برای فراخوانی جادوی colab از پیشوند تعجب ( ! ) برای فراخوانی پوسته استفاده می کند. هنگام فراخوانی این دستور از خط فرمان ، نیازی به هیچ یک از پیشوندها نیست.

نمونه ای را در اینجا مشاهده کنید .

برای اطلاعات بیشتر در مورد نحوه استفاده از TensorBoard.dev ، به https://tensorboard.dev/#get-started مراجعه کنید