Trang này được dịch bởi Cloud Translation API.
Switch to English

Sử dụng TensorBoard trong Notebook

Xem trên TensorFlow.org Chạy trong Google Colab Xem nguồn trên GitHub

TensorBoard có thể được sử dụng trực tiếp trong các 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 các quy trình công việc hiện có và sử dụng TensorBoard mà không cần cài đặt bất cứ thứ gì cục bộ.

Thiết 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 cùng một virtualenv, thì bạn nên sử dụng. Nếu bạn đang sử dụng một thiết lập phức tạp hơn, như cài đặt Jupyter toàn cầu và các hạt nhân cho các môi trường Conda / virtualenv khác nhau, thì bạn phải đảm bảo rằng nhị phân tensorboard nằm trên PATH của bạn trong ngữ cảnh máy tính xách tay Jupyter. Một cách để làm điều này là sửa đổi kernel_spec để thêm vào thư mục bin của môi trường thành PATH , như được mô tả ở đây .

Trong trường hợp bạn đang chạy hình ảnh Docker của máy chủ Jupyter Notebook bằng cách sử dụng hàng đêm của TensorFlow , cần phải phơi bày không chỉ cổng của máy tính xách tay, mà cả cổng của TensorBoard.

Do đó, chạy container với lệnh sau:

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

trong đó -p 6006 là cổng mặc định của TensorBoard. Điều này sẽ phân bổ một cổng để bạn chạy một phiên bản TensorBoard. Để có các trường hợp đồng thời, cần phải phân bổ nhiều cổng hơn.

 # Load the TensorBoard notebook extension
%load_ext tensorboard
 

Nhập TensorFlow, datetime và os:

 import tensorflow as tf
import datetime, os
 

TensorBoard trong notebook

Tải xuống tập dữ liệu FashionMNIST và chia tỷ lệ:

 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à cuộc 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 bằng phép thuật :

 %tensorboard --logdir logs
 

Bây giờ bạn có thể xem bảng điều khiển như vô hướng, biểu đồ, biểu đồ và những thứ khác. Một số bảng điều khiển chưa có sẵn trong Colab (chẳng hạn như plugin hồ sơ).

%tensorboard thuật %tensorboard có định dạng chính xác giống như cách gọi dòng lệnh TensorBoard, nhưng với % -ign phía trước nó.

Bạn cũng có thể khởi động TensorBoard trước khi đào tạo để theo dõi tiến trình:

 %tensorboard --logdir logs
 

Các phụ trợ tương tự TensorBoard được sử dụng lại bằng cách ban hành 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 cập nhật TensorBoard tự động cứ sau 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 API tensorboard.notebook để kiểm soát nhiều hơn một 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)