Hướng dẫn về TensorBoard: Trực quan hóa đồ thị TensorFlow [Ví dụ]

TensorBoard là gì?

TenorBoard là giao diện được sử dụng để trực quan hóa biểu đồ và các công cụ khác nhằm hiểu, gỡ lỗi và tối ưu hóa mô hình. Nó là một công cụ cung cấp các phép đo và trực quan hóa cho quy trình học máy. Nó giúp theo dõi các số liệu như mất mát và độ chính xác, trực quan hóa biểu đồ mô hình, nhúng dự án vào các không gian có chiều thấp hơn, v.v.

Trực quan hóa đồ thị TensorFlow bằng ví dụ Tensorboard

Hình ảnh bên dưới lấy từ biểu đồ TensorBoard mà bạn sẽ tạo trong Hướng dẫn TensorBoard này. Đây là bảng điều khiển chính:

Trực quan hóa đồ thị TensorFlow
Trực quan hóa đồ thị TensorFlow

Từ hình ảnh bên dưới, bạn có thể thấy bảng trực quan hóa biểu đồ TensorBoard. Bảng điều khiển chứa các tab khác nhau, được liên kết với mức thông tin bạn thêm khi chạy mô hình.

Đồ thị TensorBoard

Đồ thị TensorBoard
  • Vô hướng: Hiển thị các thông tin hữu ích khác nhau trong quá trình đào tạo mô hình
  • Đồ thị: Hiển thị mô hình
  • Histogram: Hiển thị trọng số bằng biểu đồ
  • phân phát: Hiển thị sự phân bổ trọng lượng
  • Projector: Hiển thị phân tích thành phần chính và thuật toán T-SNE. Kỹ thuật được sử dụng để giảm kích thước

Trong Hướng dẫn TensorBoard này, bạn sẽ đào tạo một mô hình học sâu đơn giản. Bạn sẽ tìm hiểu cách nó hoạt động trong một hướng dẫn trong tương lai.

Nếu bạn nhìn vào biểu đồ, bạn có thể hiểu mô hình hoạt động như thế nào.

  1. Enqueue data to model: Đẩy một lượng dữ liệu bằng batch size vào model, tức là Số lượng datafeed sau mỗi lần lặp
  2. Cung cấp dữ liệu cho Tensors
  3. Đào tạo mô hình
  4. Hiển thị số đợt trong quá trình đào tạo. Lưu mô hình vào đĩa.

Trực quan hóa đồ thị TensorFlow bằng ví dụ Tensorboard

Ý tưởng cơ bản đằng sau Tensorboard là mạng nơ-ron có thể là thứ được gọi là hộp đen và chúng ta cần một công cụ để kiểm tra những gì bên trong hộp này. Bạn có thể tưởng tượng Tensorboard như một chiếc đèn pin để bắt đầu khám phá mạng nơ-ron.

Nó giúp hiểu được sự phụ thuộc giữa các thao tác, cách tính trọng số, hiển thị hàm mất mát và nhiều thông tin hữu ích khác. Khi bạn tập hợp tất cả những thông tin này lại với nhau, bạn sẽ có một công cụ tuyệt vời để gỡ lỗi và tìm cách cải thiện mô hình.

Để bạn biết biểu đồ TensorBoard hữu ích như thế nào, hãy xem hình bên dưới:

Đồ thị TensorBoard
Biểu đồ TensorBoard

Mạng nơ-ron quyết định cách kết nối các “nơ-ron” khác nhau và số lớp trước khi mô hình có thể dự đoán kết quả. Sau khi bạn đã xác định kiến ​​trúc, bạn không chỉ cần đào tạo mô hình mà còn cần số liệu để tính toán độ chính xác của dự đoán. Số liệu này được gọi là mất chức năng. Mục tiêu là giảm thiểu hàm mất mát. Nói cách khác, điều đó có nghĩa là mô hình đang mắc ít lỗi hơn. Tất cả các thuật toán học máy sẽ lặp lại nhiều lần tính toán cho đến khi tổn thất đạt đến một đường phẳng hơn. Để giảm thiểu hàm mất mát này, bạn cần xác định một tỷ lệ học. Đó là tốc độ bạn muốn mô hình học. Nếu bạn đặt tốc độ học quá cao, mô hình sẽ không có thời gian để học bất cứ điều gì. Đây là trường hợp trong hình bên trái. Đường này đang di chuyển lên và xuống, có nghĩa là mô hình dự đoán kết quả chỉ bằng phỏng đoán thuần túy. Hình ảnh bên phải cho thấy tổn thất đang giảm dần trong quá trình lặp lại cho đến khi đường cong trở nên phẳng, nghĩa là mô hình đã tìm ra giải pháp.

TensorBoard là một công cụ tuyệt vời để trực quan hóa các số liệu đó và nêu bật các vấn đề tiềm ẩn. Mạng lưới thần kinh có thể mất hàng giờ đến hàng tuần trước khi tìm ra giải pháp. TensorBoard cập nhật số liệu rất thường xuyên. Trong trường hợp này, bạn không cần đợi đến cuối để xem mô hình có hoạt động chính xác hay không. Bạn có thể mở TensorBoard để kiểm tra quá trình đào tạo đang diễn ra như thế nào và thực hiện thay đổi phù hợp nếu cần.

Làm thế nào để sử dụng TensorBoard?

Trong hướng dẫn này, bạn sẽ học cách mở TensorBoard từ terminal cho MacOS và dòng lệnh TensorBoard cho Windows.

Mã sẽ được giải thích trong hướng dẫn sau, trọng tâm ở đây là TensorBoard.

Trước tiên, bạn cần nhập các thư viện bạn sẽ sử dụng trong quá trình đào tạo

## Import the library
import tensorflow as tf
import numpy as np

Bạn tạo dữ liệu. Đó là một mảng gồm 10000 hàng và 5 cột

X_train = (np.random.sample((10000,5)))
y_train =  (np.random.sample((10000,1)))
X_train.shape

Đầu ra

(10000, 5)

Các mã bên dưới chuyển đổi dữ liệu và tạo mô hình.

Lưu ý rằng tốc độ học tập bằng 0.1. Nếu bạn thay đổi tỷ lệ này thành giá trị cao hơn, mô hình sẽ không tìm ra giải pháp. Đây là những gì đã xảy ra ở phía bên trái của hình ảnh trên.

Trong hầu hết các Hướng dẫn về TensorFlow, bạn sẽ sử dụng công cụ ước tính TensorFlow. Đây là API TensorFlow chứa tất cả các phép tính toán học.

Để tạo các tệp nhật ký, bạn cần chỉ định đường dẫn. Điều này được thực hiện với đối số model_dir.

Trong ví dụ về TensorBoard bên dưới, bạn lưu trữ mô hình bên trong thư mục làm việc, tức là nơi bạn lưu trữ sổ ghi chép hoặc tệp python. Bên trong đường dẫn này, TensorFlow sẽ tạo một thư mục có tên là train với tên thư mục con là linreg.

feature_columns = [
      tf.feature_column.numeric_column('x', shape=X_train.shape[1:])]
DNN_reg = tf.estimator.DNNRegressor(feature_columns=feature_columns,
# Indicate where to store the log file    
     model_dir='train/linreg',    
     hidden_units=[500, 300],    
     optimizer=tf.train.ProximalAdagradOptimizer(      
          learning_rate=0.1,      
          l1_regularization_strength=0.001    
      )
)

Đầu ra

INFO:tensorflow:Using default config.
INFO:tensorflow:Using config: {'_model_dir': 'train/linreg', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': None, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_service': None, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x1818e63828>, '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}

Bước cuối cùng của ví dụ về biểu đồ trực quan hóa TensorFlow này bao gồm huấn luyện mô hình. Trong quá trình đào tạo, TensorFlow ghi thông tin vào thư mục mô hình.

# Train the estimator
train_input = tf.estimator.inputs.numpy_input_fn(    
     x={"x": X_train},    
     y=y_train, shuffle=False,num_epochs=None)
DNN_reg.train(train_input,steps=3000)

Đầu ra

INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Saving checkpoints for 1 into train/linreg/model.ckpt.
INFO:tensorflow:loss = 40.060104, step = 1
INFO:tensorflow:global_step/sec: 197.061
INFO:tensorflow:loss = 10.62989, step = 101 (0.508 sec)
INFO:tensorflow:global_step/sec: 172.487
INFO:tensorflow:loss = 11.255318, step = 201 (0.584 sec)
INFO:tensorflow:global_step/sec: 193.295
INFO:tensorflow:loss = 10.604872, step = 301 (0.513 sec)
INFO:tensorflow:global_step/sec: 175.378
INFO:tensorflow:loss = 10.090343, step = 401 (0.572 sec)
INFO:tensorflow:global_step/sec: 209.737
INFO:tensorflow:loss = 10.057928, step = 501 (0.476 sec)
INFO:tensorflow:global_step/sec: 171.646
INFO:tensorflow:loss = 10.460144, step = 601 (0.583 sec)
INFO:tensorflow:global_step/sec: 192.269
INFO:tensorflow:loss = 10.529617, step = 701 (0.519 sec)
INFO:tensorflow:global_step/sec: 198.264
INFO:tensorflow:loss = 9.100082, step = 801 (0.504 sec)
INFO:tensorflow:global_step/sec: 226.842
INFO:tensorflow:loss = 10.485607, step = 901 (0.441 sec)
INFO:tensorflow:global_step/sec: 152.929
INFO:tensorflow:loss = 10.052481, step = 1001 (0.655 sec)
INFO:tensorflow:global_step/sec: 166.745
INFO:tensorflow:loss = 11.320213, step = 1101 (0.600 sec)
INFO:tensorflow:global_step/sec: 161.854
INFO:tensorflow:loss = 9.603306, step = 1201 (0.619 sec)
INFO:tensorflow:global_step/sec: 179.074
INFO:tensorflow:loss = 11.110269, step = 1301 (0.556 sec)
INFO:tensorflow:global_step/sec: 202.776
INFO:tensorflow:loss = 11.929443, step = 1401 (0.494 sec)
INFO:tensorflow:global_step/sec: 144.161
INFO:tensorflow:loss = 11.951693, step = 1501 (0.694 sec)
INFO:tensorflow:global_step/sec: 154.144
INFO:tensorflow:loss = 8.620987, step = 1601 (0.649 sec)
INFO:tensorflow:global_step/sec: 151.094
INFO:tensorflow:loss = 10.666125, step = 1701 (0.663 sec)
INFO:tensorflow:global_step/sec: 193.644
INFO:tensorflow:loss = 11.0349865, step = 1801 (0.516 sec)
INFO:tensorflow:global_step/sec: 189.707
INFO:tensorflow:loss = 9.860596, step = 1901 (0.526 sec)
INFO:tensorflow:global_step/sec: 176.423
INFO:tensorflow:loss = 10.695, step = 2001 (0.567 sec)
INFO:tensorflow:global_step/sec: 213.066
INFO:tensorflow:loss = 10.426752, step = 2101 (0.471 sec)
INFO:tensorflow:global_step/sec: 220.975
INFO:tensorflow:loss = 10.594796, step = 2201 (0.452 sec)
INFO:tensorflow:global_step/sec: 219.289
INFO:tensorflow:loss = 10.4212265, step = 2301 (0.456 sec)
INFO:tensorflow:global_step/sec: 215.123
INFO:tensorflow:loss = 9.668612, step = 2401 (0.465 sec)
INFO:tensorflow:global_step/sec: 175.65
INFO:tensorflow:loss = 10.009649, step = 2501 (0.569 sec)
INFO:tensorflow:global_step/sec: 206.962
INFO:tensorflow:loss = 10.477722, step = 2601 (0.483 sec)
INFO:tensorflow:global_step/sec: 229.627
INFO:tensorflow:loss = 9.877638, step = 2701 (0.435 sec)
INFO:tensorflow:global_step/sec: 195.792
INFO:tensorflow:loss = 10.274586, step = 2801 (0.512 sec)
INFO:tensorflow:global_step/sec: 176.803
INFO:tensorflow:loss = 10.061047, step = 2901 (0.566 sec)
INFO:tensorflow:Saving checkpoints for 3000 into train/linreg/model.ckpt.
INFO:tensorflow:Loss for final step: 10.73032.

<tensorflow.python.estimator.canned.dnn.DNNRegressor at 0x1818e63630>

Dành cho người dùng MacOS

Hướng dẫn sử dụng TensorBoard cho người dùng MacOS

Trong cáp Windows người sử dụng

Hướng dẫn TensorBoard dành cho Windows người sử dang

Bạn có thể xem thông tin này trongKim tự tháp TensorBoard.

Bây giờ bạn đã ghi các sự kiện nhật ký, bạn có thể mở Tensorboard. Tensorboard Keras chạy trên cổng 6006 (Jupyter chạy trên cổng 8888). Bạn có thể sử dụng Terminal cho người dùng MacOs hoặc dấu nhắc Anaconda cho Windows người sử dụng.

Dành cho người dùng MacOS

# Different for you
cd /Users/Guru99/tuto_TF
source activate hello-tf!

Sổ ghi chép được lưu trữ trong đường dẫn /Users/Guru99/tuto_TF

Trong cáp Windows Người sử dụng

cd C:\Users\Admin\Anaconda3
activate hello-tf

Sổ ghi chép được lưu trữ trong đường dẫn C:\Users\Admin\Anaconda3

Để khởi chạy Tensorboard, bạn có thể sử dụng mã này

Dành cho người dùng MacOS

tensorboard --logdir=./train/linreg

Trong cáp Windows Người sử dụng

tensorboard --logdir=.\train\linreg

Tensorboard được đặt tại URL này: http://localhost:6006

Nó cũng có thể được đặt tại vị trí sau.

Sử dụng TensorBoard

Sao chép và dán URL vào trình duyệt yêu thích của bạn. Bạn nên thấy nó:

Lưu ý rằng, chúng ta sẽ học cách đọc biểu đồ trong hướng dẫn dành riêng cho học kĩ càng.

Sử dụng TensorBoard

Nếu bạn thấy một cái gì đó như thế này:

Sử dụng TensorBoard

Điều này có nghĩa là Tensorboard không thể tìm thấy tệp nhật ký. Hãy đảm bảo bạn trỏ cd đến đúng đường dẫn hoặc kiểm tra lại xem sự kiện nhật ký đã được tạo hay chưa. Nếu không, hãy chạy lại mã.

Nếu bạn muốn đóng TensorBoard Nhấn CTRL+C

Mẹo mũ: Kiểm tra lời nhắc anaconda của bạn để biết thư mục làm việc hiện tại,

Sử dụng TensorBoard

Tệp nhật ký phải được tạo tại C:\Users\Admin

Tổng kết

TensorBoard là một công cụ tuyệt vời để trực quan hóa mô hình của bạn. Ngoài ra, nhiều số liệu được hiển thị trong quá trình luyện tập như độ hao hụt, độ chính xác hay trọng lượng.

Để kích hoạt Tensorboard, bạn cần đặt đường dẫn tệp của mình:

cd /Users/Guru99/tuto_TF

Kích hoạt môi trường của Tensorflow

activate hello-tf

Khởi chạy Tensorboard

tensorboard --logdir=.+ PATH

Tóm tắt bài viết này với: