Skip to content

Latest commit

 

History

History
 
 

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ừ TensorFlow. 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

Graph đại diện cho phép tính

  • 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ượng tf.Operation và thêm nó vào Graph đồng thời trả về một đối tượng tf.Tensor mang giá trị 42.0.
      • Gọi hàm tf.matmul(x, y) sẽ tạo ra một đối tượng tf.Operation và thêm nó vào Graph đồng thời trả về một đối tượng tf.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ượng tf.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.
    • Phép cộng

      TensorFlow Addition

      Graph đại diện cho phép cộng:

    • Hidden Layer của một Neural network

      Công thức:

      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 0trả 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ó:

      • Tạo một lớp layer ẩn với TensorFlow

    • [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++.