TensorFlow là một thư viện mã nguồn mở dùng để training/inference machine learning model có thể sử dụng cho cả nghiên cứu và sản phẩm. TensorFlow là một thư viện mã nguồn mở dùng để training/inference machine learning model có thể sử dụng cho cả nghiên cứu và sản phẩm. TensorFlow được ghép bởi 2 từ Tensor và Flow. Tensor đại diện cho giá trị các biến, Flow là dòng chảy. TensorFlow mang hàm ý là dòng chảy các giá trị trong Graph. Và trái tim của TensorFlow chính là Computational Graph.
-
Computational Graphs
Computational Graph tương tự một Graph thông thường gồm nhiều đỉnh và các cạnh. Nó dùng để biểu diễn các phép tính toán dựa trên ngôn ngữ của Graph.
-
Đỉnh (Node) đại diện cho biến đầu vào, phép tính toán
-
Các cạnh (Edge) đại điện cho dữ liệu truyền bên trong Graph
-
-
Khởi tạo Graph trên TensorFlow
Một chú ý quan trọng khi sử dụng TensorFlow: Chúng ta phải khởi tạo đầy đủ Graph trước khi đổ giá trị của các node(Tensor) vào trong Graph. Điều này sẽ làm bạn đôi khi không quen lúc mới bắt đầu.
-
tf.Graph
Hầu hết các ứng dụng TensorFlow (TF) đều được khởi chạy bằng việc tạo ra Computation Graph như đã nhắc ở bên trên. Trong quá trình này, TF sẽ tạo ra đối tượng.
Xem kỹ thêm về TensorFlow Graph tại đây
- Gọi hàm
tf.constant(42.0)
sẽ tạo ra một đối tượngtf.Operation
và thêm nó vào Graph đồng thời trả về một đối tượngtf.Tensor
mang giá trị42.0
. - Gọi hàm
tf.matmul(x, y)
sẽ tạo ra một đối tượngtf.Operation
và thêm nó vào Graph đồng thời trả về một đối tượngtf.Tensor
mang giá trị tích của phép nhân này. - Gọi hàm
tf.train.Optimizer.minimize
sẽ thêm các phương thức và tensors vào Graph để phục vụ cho việc tính đạo hàm riêng và trả về một đối tượngtf.Operation
mà khi chạy Graph sẽ thực hiện việc tính đạo hàm riêng trên các biến cho trước.
- Gọi hàm
-
Phép cộng
-
Hidden Layer của một Neural network
Giải thích các phép tính toán trên Graph này:
-
MatMul <-> Wx: Nhân vô hướng 2 ma trận
-
Add <-> Wx + b: Cộng ma trận
-
ReLU hàm phi tuyến. Bạn chỉ cần hiểu đơn giản về hàm này: Hàm này sẽ trả về giá trị của chính đầu vào nếu đầu vào lớn hơn 0 và trả về 0 nếu đầu vào nhỏ hơn 0. Bạn có thể hiểu rõ tính chất của hàm này thông qua đồ thị của nó:
-
-
[Quan trọng] Tại sao cần phải sử dụng Computational Graph?
Như đã đề cập ở bên trên, Computational Graph hay Dataflow Graph dùng để biểu diễn các phép tính toán. Bạn sẽ phải tạo Graph trước rồi sử dụng TensorFlow Session để chạy các phần của Graph này.
Dataflow là mô hình lập trình (programming model) chuyên dùng cho tính toán song song. Xem thêm tại đây. Ở trong Graph, các đỉnh (nodes) đại diện cho các phép tính, và các cạnh (edges) đại diện cho dữ liệu đầu vào và đầu ra của các phép tính trên.
Một số ưu điểm của Dataflow mà TensorFlow (TF) có thể tận dụng được:
-
Tính toán song song (Parallelism): Bằng việc chia tách các phép tính toán độc lập, TF có khả năng lựa chọn thực hiện song song các phép tính cụ thể.
-
Thực thi phân tán (Distributed Execution): TF có khả năng chia nhỏ ứng dụng của bạn cho nhiều CPU, TPU, GPU khác nhau trên nhiều máy khác nhau.
-
Biên dịch (Compliation): XLA của TF có thể dùng graph để generate ra code chạy nhanh hơn thông thường.
-
Tính di động (Portability): Graph là ngôn ngữ biểu diễn độc lập (language-independent representation) với model của bạn. Bạn có thể build một Graph bằng Python, save model, store lại bằng C++.
-
-