این صفحه به‌وسیله ‏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 مراجعه کنید