หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

การใช้ TensorBoard ใน Notebooks

ดูใน 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 เพื่อนำหน้าไดเร็กทอรี bin ของสภาพแวดล้อมไปที่ PATH ตามที่อธิบายไว้ที่นี่

สำหรับผู้ใช้ Docker: ในกรณีที่คุณใช้งานอิมเมจ Docker ของ เซิร์ฟเวอร์ Jupyter Notebook โดยใช้ 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 วันที่เวลาและระบบปฏิบัติการ:

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 callback:

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 แต่มี % -sign อยู่ข้างหน้า

คุณยังสามารถเริ่ม TensorBoard ก่อนการฝึกอบรมเพื่อตรวจสอบความคืบหน้า:

%tensorboard --logdir logs

แบ็กเอนด์ TensorBoard เดียวกันจะถูกใช้ซ้ำโดยการออกคำสั่งเดียวกัน หากเลือกไดเร็กทอรีบันทึกอื่นระบบจะเปิดอินสแตนซ์ใหม่ของ TensorBoard พอร์ตจะถูกจัดการโดยอัตโนมัติ

เริ่มฝึกโมเดลใหม่และดูการอัปเดต TensorBoard โดยอัตโนมัติทุก ๆ 30 วินาทีหรือรีเฟรชด้วยปุ่มด้านขวาบน:

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 API เพื่อการควบคุมเพิ่มเติมอีกเล็กน้อย:

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)