TensorBoard là gì

TensorBoard là giao diện được sử dụng để trực quan hóa biểu đồ và các công cụ khác để 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à hình ảnh hóa cho quy trình làm việc của máy học. 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 ở không gian có chiều thấp hơn, v.v.

Ví dụ về TensorFlow Graph Visualization bằng Tensorboard

Hình ảnh bên dưới đến 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

Từ hình bên dưới, bạn có thể thấy bảng điều khiển trực quan hóa đồ thị 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 vào khi chạy mô hình.

 

 

  • Scalars : Hiển thị thông tin hữu ích khác nhau trong quá trình đào tạo mô hình
  • Graphs : Hiển thị mô hình
  • Histogram : Hiển thị trọng số bằng biểu đồ
  • Distribution : Hiển thị sự phân bố của 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 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 cách hoạt động của mô hình.

  1. Xếp dữ liệu vào mô hình: Đẩy một lượng dữ liệu vào mô hình, tức là Số lượng nguồn cấp dữ liệu 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ố lần dữ trong quá trình đào tạo. Lưu mô hình trên ổ đĩa.

Ý tưởng cơ bản đằng sau tensorboard là mạng nơ-ron có thể là một 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 đi sâu vào mạng nơ-ron.

Nó giúp hiểu được sự phụ thuộc giữa các hoạt động, cách tính trọng lượng, hiển thị hàm giảm và nhiều thông tin hữu ích khác. Khi bạn tập hợp tất cả những phần thông tin này lại với nhau, bạn 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.

Để cung cấp cho bạn ý tưởng về mức độ hữu ích của biểu đồ TensorBoard, hãy xem hình bên dưới:

Mạng nơ-ron quyết định cách kết nối các “nơ-ron” khác nhau và bao nhiêu lớp trước khi mô hình có thể dự đoán kết quả. Một 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 một 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à hàm tổn thất. Mục tiêu là giảm thiểu hàm mất mát. Nói cách khác, nó 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 các phép tính cho đến khi tổn thất đạt đến một đường bằng phẳng hơn. Để giảm thiểu hàm mất mát này, bạn cần xác định tỷ lệ học tập. Nó là tốc độ bạn muốn mô hình học. Nếu bạn đặt tỷ lệ học tập quá cao,  mẫu 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 di chuyển lên và xuống, có nghĩa là mô hình dự đoán kết quả thuần túy. Hình bên phải cho thấy sự mất mát đang giảm dần qua các lần lặp lại cho đến khi đường cong phẳng hơn, có nghĩa là mô hình đã tìm ra giải pháp.

TensorBoard là một công cụ tuyệt vời để hình dung các số liệu đó và làm nổi bật các vấn đề tiềm ẩn. Mạng nơ-ron có thể mất vài giờ đến vài tuần trước khi họ tìm ra giải pháp. TensorBoard cập nhật các chỉ số rất thường xuyên. Trong trường hợp này, bạn không cần phải đợi cho đến khi kết thúc để xem liệu mô hình có đào tạo chính xác hay không. Bạn có thể mở TensorBoard để kiểm tra xem quá trình đào tạo 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.

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

Trước tiên, bạn cần nhập các thư viện mà 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. Nó 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

Output

(10000, 5)

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

Lưu ý rằng tỷ lệ học tập bằng 0,1. Nếu bạn thay đổi tỷ lệ này thành một 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 bức ả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 lượng TensorFlow. Đây là API TensorFlow chứa tất cả các phép tính toán học.

Để tạo 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ụ 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    
      )
)

Output

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ề đồ thị trực quan TensorFlow này bao gồm đào tạo 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>

Đối với người dùng MacOS

Đối với người dùng Windows

Bạn có thể xem thông tin này trong PyTorch TensorBoard.

Bây giờ bạn đã viết các sự kiện , 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 Anaconda cho người dùng Windows.

Đối với người dùng MacOS

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

Sổ tay được lưu trữ trong đường dẫn / Users / Guru99 / tutorial_TF

Đối với người dùng Windows

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

Sổ tay đượ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

Đối với người dùng MacOS

tensorboard --logdir=./train/linreg

Đối với người dùng Windows

tensorboard --logdir=.\train\linreg

Tensorboard nằm trong URL này: http: // localhost: 6006

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

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 xem thứ này:

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 việc học sâu .

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

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

Nếu bạn muốn đóng TensorBoard, hãy nhấn CTRL + C

Mẹo : Kiểm tra anaconda prompt của bạn cho thư mục làm việc hiện tại,

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

Tóm lược:

TensorBoard là một công cụ tuyệt vời để hình dung mô hình của bạn. Bên cạnh đó, nhiều số liệu được hiển thị trong quá trình đào tạo, chẳng hạn như mất mát, độ chính xác hoặc 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 / tutorial_TF

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

activate hello-tf

Khởi chạy Tensorboard

tensorboard --logdir=.+ PATH
Check Also
Close
Back to top button