Sử dụng TensorBoard trong Notebooks

Xem trên TensorFlow.org Chạy trong Google Colab Xem nguồn trên GitHub Tải xuống sổ ghi chép

TensorBoard thể được sử dụng trực tiếp trong những trải nghiệm máy tính xách tay như ColabJupyter . Điều này có thể hữu ích cho việc chia sẻ kết quả, tích hợp TensorBoard vào quy trình công việc hiện có và sử dụng TensorBoard mà không cần cài đặt cục bộ bất kỳ thứ gì.

Thành lập

Bắt đầu bằng cách cài đặt TF 2.0 và tải phần mở rộng máy tính xách tay TensorBoard:

Đối với người dùng Jupyter: Nếu bạn đã cài đặt Jupyter và TensorBoard vào virtualenv cùng, sau đó bạn sẽ được tốt để đi. Nếu bạn đang sử dụng một thiết lập phức tạp hơn, như một cài đặt Jupyter toàn cầu và hạt nhân cho khác nhau Conda / virtualenv môi trường, sau đó bạn phải đảm bảo rằng tensorboard nhị phân là vào bạn PATH trong bối cảnh máy tính xách tay Jupyter. Một cách để làm điều này là để thay đổi kernel_spec để thêm vào trước của môi trường bin thư mục để PATH , như mô tả ở đây .

Đối với người dùng Docker: Trong trường hợp bạn đang chạy một Docker hình ảnh của máy chủ Máy tính xách tay sử dụng Jupyter TensorFlow của đêm , nó là cần thiết để lộ không chỉ cổng của máy tính xách tay, nhưng cổng của TensorBoard. Do đó, hãy chạy vùng chứa bằng lệnh sau:

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

nơi -p 6006 là cổng mặc định của TensorBoard. Điều này sẽ cấp phát một cổng để bạn chạy một phiên bản TensorBoard. Để có các thể hiện đồng thời, cần phải phân bổ nhiều cổng hơn. Ngoài ra, vượt qua --bind_all đến %tensorboard để lộ các cổng bên ngoài container.

# Load the TensorBoard notebook extension
%load_ext tensorboard

Nhập TensorFlow, datetime và os:

import tensorflow as tf
import datetime, os

TensorBoard trong máy tính xách tay

Tải FashionMNIST bộ dữ liệu và quy mô nó:

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

Tạo một mô hình rất đơn giản:

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

Huấn luyện mô hình bằng cách sử dụng Keras và lệnh gọi lại 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

Bắt đầu TensorBoard trong máy tính xách tay sử dụng phép thuật :

%tensorboard --logdir logs

Giờ đây, bạn có thể xem các trang tổng quan như vô hướng, biểu đồ, biểu đồ và các trang khác. Một số trang tổng quan chưa có sẵn trong Colab (chẳng hạn như plugin hồ sơ).

Các %tensorboard kỳ diệu có chính xác định dạng giống như dòng gọi lệnh TensorBoard, nhưng với một % -Đăng nhập phía trước nó.

Bạn cũng có thể khởi động TensorBoard trước khi luyện tập để theo dõi quá trình luyện tập:

%tensorboard --logdir logs

Phần phụ trợ TensorBoard tương tự được sử dụng lại bằng cách đưa ra cùng một lệnh. Nếu một thư mục nhật ký khác được chọn, một phiên bản mới của TensorBoard sẽ được mở. Các cổng được quản lý tự động.

Bắt đầu đào tạo một mô hình mới và xem TensorBoard cập nhật tự động sau mỗi 30 giây hoặc làm mới nó bằng nút ở trên cùng bên phải:

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

Bạn có thể sử dụng tensorboard.notebook API cho một kiểm soát nhiều hơn chút:

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)