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

استفاده از 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 ، که در اینجا شرح .

در صورت اجرای تصویر Docker از سرور Jupyter Notebook با استفاده از شبانه TensorFlow ، لازم است نه تنها درگاه نوت بوک بلکه درگاه TensorBoard را در معرض نمایش بگذارید.

بنابراین ، ظرف را با دستور زیر اجرا کنید:

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

جایی که -p 6006 پورت پیش فرض TensorBoard است. این کار برای اجرای یک نمونه TensorBoard به شما پورت اختصاص می دهد. برای داشتن نمونه های همزمان ، تخصیص پورت های بیشتر ضروری است.

 # Load the TensorBoard notebook extension
%load_ext tensorboard
 

وارد کردن TensorFlow ، datetime و سیستم عامل:

 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

برای کنترل کمی بیشتر می توانید از API های 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)