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:

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.
- 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.
- 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
- Cung cấp dữ liệu cho Tensors
- Đào tạo mô hình
- Hiển thị số đợt trong quá trình đào tạo. Lưu mô hình vào đĩa.
Ý 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:

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
Trong cáp Windows người sử dụng
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.
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.
Nếu bạn thấy một cái gì đó như thế này:
Đ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,
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







