استفاده از TensorBoard در نوت بوک ها

مشاهده در TensorFlow.org در Google Colab اجرا شود مشاهده منبع در GitHub دانلود دفترچه یادداشت

TensorBoard می توان به طور مستقیم در تجارب نوت بوک از قبیل استفاده می COLAB و Jupyter . این می تواند برای به اشتراک گذاری نتایج، ادغام TensorBoard در جریان های کاری موجود و استفاده از TensorBoard بدون نصب چیزی به صورت محلی مفید باشد.

برپایی

با نصب TF 2.0 و بارگیری پسوند نوت بوک TensorBoard شروع کنید:

برای کاربران Jupyter: اگر شما Jupyter و TensorBoard به از virtualenv همان را نصب کرده اید، پس شما باید خوب به آن بروید. اگر شما با استفاده از تنظیمات پیچیده تر، مانند یک نصب و راه اندازی Jupyter جهانی و دانه های مختلف Conda / از virtualenv محیط، و سپس شما باید اطمینان حاصل شود که tensorboard باینری است در خود PATH در داخل متن نوت بوک Jupyter. یکی از راه های انجام این کار این است که اصلاح kernel_spec به prepend کنید محیط زیست bin دایرکتوری به PATH ، که در اینجا شرح .

برای کاربران کارگر بارانداز: در صورتی که شما در حال اجرا یک کارگر بارانداز تصویر سرور نوت بوک با استفاده از Jupyter TensorFlow را شبانه ، لازم است به افشای نه تنها پورت نوت بوک، اما پورت TensorBoard است. بنابراین، کانتینر را با دستور زیر اجرا کنید:

docker run -it -p 8888:8888 -p 6006:6006 \
tensorflow/tensorflow:nightly-py3-jupyter 

که در آن -p 6006 پورت پیش فرض TensorBoard است. این یک پورت را برای اجرای یک نمونه TensorBoard به شما اختصاص می دهد. برای داشتن نمونه های همزمان، باید پورت های بیشتری را اختصاص داد. همچنین، عبور --bind_all به %tensorboard به افشای پورت خارج از ظرف.

# Load the TensorBoard notebook extension
%load_ext tensorboard

وارد کردن TensorFlow، datetime و OS:

import tensorflow as tf
import datetime, os

TensorBoard در نوت بوک

دانلود FashionMNIST مجموعه داده و آن را در مقیاس:

fashion_mnist = tf.keras.datasets.fashion_mnist

(x_train, y_train),(x_test, y_test) = fashion_mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz
32768/29515 [=================================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz
26427392/26421880 [==============================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz
8192/5148 [===============================================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz
4423680/4422102 [==============================] - 0s 0us/step

یک مدل بسیار ساده ایجاد کنید:

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

مدل را با استفاده از Keras و پاسخ تماس TensorBoard آموزش دهید:

def train_model():

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

  logdir = os.path.join("logs", datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
  tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)

  model.fit(x=x_train, 
            y=y_train, 
            epochs=5, 
            validation_data=(x_test, y_test), 
            callbacks=[tensorboard_callback])

train_model()
Train on 60000 samples, validate on 10000 samples
Epoch 1/5
60000/60000 [==============================] - 11s 182us/sample - loss: 0.4976 - accuracy: 0.8204 - val_loss: 0.4143 - val_accuracy: 0.8538
Epoch 2/5
60000/60000 [==============================] - 10s 174us/sample - loss: 0.3845 - accuracy: 0.8588 - val_loss: 0.3855 - val_accuracy: 0.8626
Epoch 3/5
60000/60000 [==============================] - 10s 175us/sample - loss: 0.3513 - accuracy: 0.8705 - val_loss: 0.3740 - val_accuracy: 0.8607
Epoch 4/5
60000/60000 [==============================] - 11s 177us/sample - loss: 0.3287 - accuracy: 0.8793 - val_loss: 0.3596 - val_accuracy: 0.8719
Epoch 5/5
60000/60000 [==============================] - 11s 178us/sample - loss: 0.3153 - accuracy: 0.8825 - val_loss: 0.3360 - val_accuracy: 0.8782

شروع TensorBoard در نوت بوک با استفاده از جادوهای :

%tensorboard --logdir logs

اکنون می توانید داشبوردهایی مانند اسکالرها، نمودارها، هیستوگرام ها و موارد دیگر را مشاهده کنید. برخی از داشبوردها هنوز در Colab در دسترس نیستند (مانند افزونه نمایه).

%tensorboard سحر و جادو است دقیقا همان فرمت دستور TensorBoard خط نیایش، اما با یک % سومری در مقابل آن.

همچنین می توانید TensorBoard را قبل از آموزش راه اندازی کنید تا در حال انجام آن نظارت داشته باشید:

%tensorboard --logdir logs

همان باطن TensorBoard با صدور همان فرمان دوباره مورد استفاده قرار می گیرد. اگر دایرکتوری گزارش های متفاوتی انتخاب شود، نمونه جدیدی از TensorBoard باز می شود. پورت ها به صورت خودکار مدیریت می شوند.

آموزش یک مدل جدید را شروع کنید و هر 30 ثانیه به‌روزرسانی خودکار TensorBoard را تماشا کنید یا آن را با دکمه سمت راست بالا به‌روزرسانی کنید:

train_model()
Train on 60000 samples, validate on 10000 samples
Epoch 1/5
60000/60000 [==============================] - 11s 184us/sample - loss: 0.4968 - accuracy: 0.8223 - val_loss: 0.4216 - val_accuracy: 0.8481
Epoch 2/5
60000/60000 [==============================] - 11s 176us/sample - loss: 0.3847 - accuracy: 0.8587 - val_loss: 0.4056 - val_accuracy: 0.8545
Epoch 3/5
60000/60000 [==============================] - 11s 176us/sample - loss: 0.3495 - accuracy: 0.8727 - val_loss: 0.3600 - val_accuracy: 0.8700
Epoch 4/5
60000/60000 [==============================] - 11s 179us/sample - loss: 0.3282 - accuracy: 0.8795 - val_loss: 0.3636 - val_accuracy: 0.8694
Epoch 5/5
60000/60000 [==============================] - 11s 176us/sample - loss: 0.3115 - accuracy: 0.8839 - val_loss: 0.3438 - val_accuracy: 0.8764

شما می توانید با استفاده از tensorboard.notebook رابط های برنامه کاربردی برای کنترل کمی بیشتر:

from tensorboard import notebook
notebook.list() # View open TensorBoard instances
Known TensorBoard instances:

  - port 6006: logdir logs (started 0:00:54 ago; pid 265)
# Control TensorBoard display. If no port is provided, 
# the most recently launched TensorBoard is used
notebook.display(port=6006, height=1000)