TensorFlow là gì? Vai trò của TensorFlow trong sự phát triển của học máy

3800
30-12-2024
TensorFlow là gì? Vai trò của TensorFlow trong sự phát triển của học máy

TensorFlow là công cụ được đa số lập trình viên sử dụng trong lĩnh vực Machine learning (Học máy). Nếu bạn muốn tìm hiểu chi tiết về TensorFlow, thì nhất định không nên bỏ qua bài viết dưới đây của Bizfly Cloud về TensorFlow cũng như vai trò trong sự phát triển của học máy.

Tensorflow là gì?

TensorFlow là một thư viện mã nguồn mở end-to-end được tạo ra chủ yếu dành cho các ứng dụng Học máy. Nó là một thư viện toán học ký hiệu sử dụng luồng dữ liệu và lập trình có thể phân biệt để thực hiện các nhiệm vụ khác nhau, tập trung vào đào tạo và suy luận các mạng nơ-ron sâu (deep neural network). Nó cho phép các nhà phát triển tạo các ứng dụng học máy bằng cách sử dụng các công cụ, thư viện và tài nguyên cộng đồng khác nhau.

TensorFlow là gì? Vai trò của TensorFlow trong sự phát triển của học máy - Ảnh 1.

Hiện tại, thư viện học sâu nổi tiếng nhất trên thế giới là TensorFlow của Google. Sản phẩm của Google sử dụng công nghệ máy học trong tất cả các sản phẩm của mình để cải thiện công cụ tìm kiếm, bản dịch, chú thích hình ảnh hoặc các đề xuất.

Để đưa ra một ví dụ cụ thể, người dùng Google có thể trải nghiệm tìm kiếm nhanh hơn và tinh tế hơn với AI. Nếu người dùng nhập từ khóa vào thanh tìm kiếm, Google sẽ đưa ra các đề xuất về từ tiếp theo có thể là từ khóa nào (hay nói cách khác chính là các từ khóa liên quan).

Google muốn sử dụng công nghệ máy học để tận dụng bộ dữ liệu khổng lồ của họ nhằm mang đến cho người dùng trải nghiệm tốt nhất. Ba nhóm người dùng phổ biến sử dụng công nghệ máy học đó là:

  • Các nhà nghiên cứu
  • Các nhà khoa học dữ liệu
  • Lập trình viên

Tất cả họ đều có thể sử dụng cùng một bộ công cụ để cộng tác với nhau và nâng cao hiệu quả làm việc.

Google không chỉ có dữ liệu; họ có máy tính lớn nhất thế giới, vì vậy Tensorflow được họ xây dựng để mở rộng quy mô. TensorFlow là một thư viện do Nhóm Google Brain phát triển để tăng tốc công nghệ học máy và nghiên cứu mạng nơ-ron sâu.

Nó được xây dựng để chạy trên nhiều CPU hoặc GPU và thậm chí cả hệ điều hành di động, và nó có một số trình bao bọc (wrapper) bằng một số ngôn ngữ như Python, C ++ hoặc Java.

Lịch sử của TensorFlow

Một vài năm trước, deep learning bắt đầu nổi lên và vượt trội hơn tất cả các thuật toán học máy khác khi cung cấp một lượng lớn dữ liệu. Google thấy rằng họ có thể sử dụng các mạng nơ-ron sâu này để cải thiện các dịch vụ của mình, bao gồm

Gmail

Google Photos

Google Search Engine

Họ xây dựng một khuôn khổ có tên là Tensorflow để cho phép các nhà nghiên cứu và nhà phát triển làm việc cùng nhau trên một mô hình AI. Sau khi được phát triển và mở rộng, TensorFlow đã mở rộng ra cho nhiều người sử dụng hơn.

Phiên bản thử nghiệm của TensorFlow được công bố lần đầu tiên vào cuối năm 2015, và đi vào ổn định hơn với phiên bản năm 2017. Nó là mã nguồn mở theo giấy phép Nguồn mở Apache. Bạn có thể sử dụng nó, sửa đổi nó và phân phối lại phiên bản đã sửa đổi với một khoản phí mà không phải trả bất cứ thứ gì cho Google.

Cách hoạt động của TensorFlow

TensorFlow cho phép bạn xây dựng biểu đồ và cấu trúc luồng dữ liệu để xác định cách dữ liệu di chuyển qua biểu đồ bằng cách lấy đầu vào là một mảng đa chiều được gọi là Tensor. Nó cho phép bạn xây dựng một sơ đồ các hoạt động có thể được thực hiện trên các đầu vào này, đi ở một đầu và đến ở đầu kia là đầu ra.

Kiến trúc TensorFlow

Kiến trúc Tensorflow hoạt động trong ba phần:

Xử lý trước dữ liệu

Xây dựng mô hình

Đào tạo và ước tính mô hình

Nó được gọi là Tensorflow vì nó nhận đầu vào là một mảng đa chiều, còn được gọi là tensor. Bạn có thể xây dựng một loại lưu đồ (flowchart - lưu đồ hay còn gọi là sơ đồ quy trình) hoạt động (được gọi là Graph) mà bạn muốn thực hiện trên đầu vào đó. Đầu vào đi vào một đầu, và sau đó nó chảy qua hệ thống gồm nhiều hoạt động này và đi ra đầu kia dưới dạng đầu ra.

Đây là lý do tại sao nó được gọi là TensorFlow bởi vì tensor đi trong nó chảy qua một danh sách các hoạt động, và sau đó nó đi ra phía bên kia.

Tensorflow có thể chạy ở đâu?

Yêu cầu về phần cứng và phần mềm của TensorFlow có thể được phân loại thành:

Giai đoạn Phát triển: Đây là khi bạn đào tạo mô hình. Việc đào tạo thường được thực hiện trên Desktop hoặc laptop.

Giai đoạn Chạy hoặc Giai đoạn Suy luận: Sau khi đào tạo xong, Tensorflow có thể được chạy trên nhiều nền tảng khác nhau. Bạn có thể chạy nó trên

  • Desktop chạy Windows, macOS hoặc Linux
  • Cloud dưới dạng dịch vụ web
  • Các thiết bị di động như iOS và Android

Bạn có thể đào tạo nó trên nhiều máy, sau đó chạy nó trên một máy khác sau khi đã có mô hình được đào tạo.

Mô hình có thể được đào tạo và sử dụng trên GPU cũng như CPU. GPU ban đầu được thiết kế cho trò chơi điện tử. Vào cuối năm 2010, các nhà nghiên cứu tại Stanford đã phát hiện ra rằng GPU cũng rất giỏi trong các phép toán ma trận và đại số, do đó nó giúp chúng thực hiện các loại tính toán này rất nhanh. Học sâu dựa trên rất nhiều phép nhân ma trận. TensorFlow tính toán phép nhân ma trận rất nhanh vì nó được viết bằng C ++. Ngoài ra, TensorFlow cũng có thể được truy cập và điều khiển bởi các ngôn ngữ khác, chủ yếu là Python.

Cuối cùng, một tính năng quan trọng của TensorFlow là TensorBoard. TensorBoard cho phép người dùng có thể theo dõi những gì TensorFlow đang làm một cách trực quan và sinh động nhất dựa trên đồ họa. 

Giới thiệu về các thành phần của TensorFlow

Tensor

Tên của Tensorflow có nguồn gốc trực tiếp từ khung cốt lõi của nó: Tensor. Trong Tensorflow, tất cả các phép tính liên quan đến các tensor. Một tensor là một vectơ hoặc ma trận có n chiều đại diện cho tất cả các loại dữ liệu. Tất cả các giá trị trong một tensor giữ kiểu dữ liệu giống hệt nhau với hình dạng đã biết (hoặc đã biết một phần). Hình dạng của dữ liệu là kích thước của ma trận hoặc mảng.

Một tensor có thể được bắt nguồn từ dữ liệu đầu vào hoặc kết quả của một phép tính. Trong TensorFlow, tất cả các hoạt động được tiến hành bên trong một biểu đồ (graph) . Biểu đồ là một tập hợp các phép tính diễn ra liên tiếp. Mỗi thao tác được gọi là một nút op (op node) và được kết nối với nhau.

Biểu đồ phác thảo các hoạt động và kết nối giữa các nút. Tuy nhiên, nó không hiển thị các giá trị. Cạnh của các nút là tensor, tức là, một cách để điền hoạt động với dữ liệu.

Graphs (Đồ thị)

TensorFlow sử dụng khung đồ thị. Đồ thị tập hợp và mô tả tất cả các phép tính chuỗi được thực hiện trong quá trình đào tạo. Đồ thị có rất nhiều ưu điểm:

Nó đã được thực hiện để chạy trên nhiều CPU hoặc GPU và thậm chí cả hệ điều hành di động

Tính di động của đồ thị cho phép duy trì các tính toán để sử dụng ngay lập tức hoặc sau này. Đồ thị có thể lưu lại được để thực hiện các nhiệm vụ trong tương lai.

Tất cả các tính toán trong biểu đồ được thực hiện bằng cách kết nối các tensor với nhau

Một tensor có một nút và một cạnh. Nút thực hiện phép toán và tạo ra kết quả đầu cuối. Các cạnh giải thích các mối quan hệ đầu vào / đầu ra giữa các nút.

Các thuật toán nổi bật được hỗ trợ bởi TensorFlow

TensorFlow hỗ trợ nhiều thuật toán nổi bật trong đó có cả các thuật toán học máy và deep-learning. Dưới đây là một số thuật toán tiêu biểu: 

  • Linear Regression (Hồi quy tuyến tính) Thuật toán đơn giản giúp người dùng tiếp cận và hiểu cách hoạt động của mô hình, phù hợp với dữ liệu có mối quan hệ tuyến tính.
  • Classification (Phân loại) TensorFlow cung cấp nhiều thuật toán phân loại như Support Vector Machine, Random Forest và Neural Networks, cho phép xây dựng các mô hình phân loại linh hoạt và chính xác cho các bài toán phức tạp.
  • Deep Learning Classification (Phân loại học sâu) Sử dụng mạng nơ-ron sâu để học và dự đoán dữ liệu, giúp cải thiện độ chính xác và hiệu suất của mô hình, đồng thời có khả năng xử lý dữ liệu lớn và phức tạp. Các thuật toán Deep Learning phổ biến như Neural Networks, Convolutional Neural Networks (CNN), Recurrent Neural Networks (RNN) đều được TensorFlow hỗ trợ.
  • Deep Learning Wipe and Deep TensorFlow cung cấp nhiều thuật toán nổi bật, bao gồm Neural Networks, Convolutional Neural Networks (CNN), Recurrent Neural Networks (RNN).
  • Booster Tree Regression TensorFlow cung cấp các công cụ để xây dựng và tinh chỉnh các mô hình Booster Tree Regression, giúp tối ưu hóa hiệu suất và độ chính xác.

Ưu điểm của TensorFlow là gì?

Một số ưu điểm nổi bật của TensorFlow có thể kể đến như:

Khả năng phân tích tổng quan

Một trong những lợi ích lớn nhất của TensorFlow là khả năng phân tích tổng quan abstraction. Quy trình phát triển phần mềm bao gồm nhiều công đoạn khác nhau. Để chương trình chạy ổn định, sự tỉ mỉ, chi tiết cần được đặt lên hàng đầu để không xảy ra lỗi hệ thống.

Chính vì vậy, TensorFlow được xem như một công cụ hữu ích mang đến góc nhìn tổng quan cho người dùng. Những công đoạn nhỏ như triển khai thuật toán hoặc chuyển input thành output và ngược lại, đều được TensorFlow xử lý tự động và nhanh chóng. Nhờ đó, người dùng có thể giảm bớt được khối lượng công việc và tập trung cho việc phát triển tính logic tổng thể của ứng dụng.

Dễ dàng chỉnh sửa định hướng

Với tính năng Eager execution, TensorFlow cho phép người dùng dễ dàng chỉnh sửa trực tiếp các operation trong biểu đồ hướng xử lý dữ liệu, thay vì phải khởi tạo lại biểu đồ. Từ đó tiết kiệm được rất nhiều thời gian và công sức cho người dùng. Người dùng cũng có thể để lại đánh giá và cài đặt bổ sung các tính năng cho Tensorflow để phục vụ cho những lần làm việc tiếp theo được hiệu quả hơn.

Ngoài ra, bạn cũng có thể dễ dàng tìm và phát hiện lỗi bằng tính năng TensorBoard. Công cụ này giúp người dùng quan sát trực tiếp quy trình làm việc của TensorFlow, từ đó phát hiện ra những sai sót trong quy trình vận hành để có thể kịp thời chỉnh sửa.

Được phát triển dựa trên nền tảng Google

Được phát triển bởi một trong những công ty công nghệ hàng đầu thế giới Google, TensorFlow được cải tiến và cập nhật thường xuyên để phù hợp hơn với xu hướng hiện đại. Những phần mềm hỗ trợ phát triển cho TensorFlow cũng rất đa dạng. Chẳng hạn như, người dùng có thể tăng tốc độ đám mây bằng cách sử dụng silicon TPU hoặc chia sẻ các model mới cho framework thông qua kênh online hub.

Các option tải dữ liệu vào TensorFlow

Các phương pháp tải dữ liệu

Để tải dữ liệu vào TensorFlow, bạn có thể sử dụng một trong hai phương pháp phổ biến sau:

  • Load dữ liệu vào bộ nhớ: Đây là phương pháp đơn giản nhất, phù hợp với các dataset nhỏ (ví dụ, dưới 10GB) mà có thể dễ dàng đưa vào bộ nhớ. Bạn có thể sử dụng các thư viện như Pandas để nhập các tệp CSV. Với numpy arrays, bạn có thể convert chúng thành tf.Tensor object nếu có thể load hết dữ liệu đầu vào mà không bị thiếu memory.
  • TensorFlow data pipeline: TensorFlow cung cấp các API tích hợp sẵn để giúp bạn load dữ liệu, thực thi các operation và cung cấp dữ liệu cho các thuật toán machine learning một cách dễ dàng, đặc biệt phù hợp với các dataset lớn mà không thể fit vào bộ nhớ. tf.data API chứa các công cụ hỗ trợ xử lý dữ liệu, ví dụ như image pipeline chứa một cặp tensors: image và label.

Nên chọn phương án gì?

Nếu dataset của bạn nhỏ hơn 10 GB, bạn có thể sử dụng phương pháp đầu tiên. Dữ liệu dễ dàng vừa vặn trong bộ nhớ và bạn có thể dùng thư viện Pandas để nhập các tệp CSV.

Ngược lại, phương pháp thứ hai thích hợp với những dataset lớn, như 50 GB, trong khi máy tính chỉ có 16 GB RAM. Trong trường hợp này, bạn cần thiết lập một TensorFlow pipeline để tải dữ liệu theo từng batch nhỏ. Mỗi batch được đưa vào pipeline và sẵn sàng cho quá trình training. Việc tạo pipeline cho phép bạn tận dụng tính toán song song, giúp TensorFlow huấn luyện mô hình qua nhiều CPU, tăng tốc độ tính toán và cho phép xây dựng mạng nơ-ron mạnh mẽ hơn.

  • Bước 1: Tạo dữ liệu

Sử dụng thư viện numpy để tạo hai giá trị ngẫu nhiên.

import numpy as np  

x_input = np.random.sample((1,2))  

print(x_input)  

  • Bước 2: Tạo placeholder

Tạo một placeholder tên là X và chỉ định rõ ràng shape của TensorFlow. Trong một số trường hợp, chúng ta sẽ tải một mảng với hai giá trị, viết shape là shape=[1,2].

x = tf.placeholder(tf.float32, shape=[1,2], name='X')  

  • Bước 3: Xác định phương pháp cho set dữ liệu

Tiếp theo, xác định dataset để nhập giá trị cho placeholder x bằng phương pháp tf.data.Dataset.from_tensor_slices.

dataset = tf.data.Dataset.from_tensor_slices(x)  

  • Bước 4: Tạo đường ống

Trong bước này, khởi tạo pipeline để dữ liệu chạy qua bằng cách tạo một iterator với make_initializable_iterator, đặt tên là iterator. Sử dụng iterator này để lấy batch dữ liệu tiếp theo, gọi là get_next. Lưu ý rằng trong ví dụ này, chỉ có một batch với hai giá trị.

iterator = dataset.make_initializable_iterator()   

get_next = iterator.get_next()  

  • Bước 5: Thực thi operation

Bước cuối tương tự như trước, khởi tạo một session và chạy operation iterator. Ta sử dụng feed_dict với giá trị từ numpy để nhập vào placeholder x, sau đó chạy get_next để in kết quả.

with tf.Session() as sess:  

sess.run(iterator.initializer, feed_dict={x: x_input})   

print(sess.run(get_next)) # Output ví dụ: [0.52374458 0.71968478]  

Như vậy, bạn đã có một quy trình hoàn chỉnh để xử lý dữ liệu bằng TensorFlow từ việc tạo dữ liệu đến khởi tạo và thực thi pipeline.

Những công cụ khi sử dụng TensorFlow

Dưới đây là những công cụ phổ biến khi sử dụng TensorFlow:

DeepDream

DeepDream là ứng dụng hoạt động dựa trên nền tảng của TensorFlow, có khả năng tự động tạo phụ đề cho hình ảnh. Công cụ này sử dụng mạng nơ-ron phức hợp để tìm kiếm và cải tiến những vật thể có trong hình ảnh thông qua các thuật toán được lấy cảm hứng dự trên ảo giác trong giấc mơ.

RankBrain

RankBrain là sản phẩm của Google được phát triển dựa trên TensorFlow. Công cụ này có thể xử lý một lượng truy vấn tìm kiếm khổng lồ, đồng thời bổ sung và thay thế các thuật toán truyền thống.

Tại sao TensorFlow lại phổ biến?

TensorFlow là thư viện tốt nhất vì nó được xây dựng để mọi người có thể truy cập được. Thư viện Tensorflow kết hợp các API khác nhau để xây dựng kiến trúc học sâu ở quy mô lớn như CNN hoặc RNN. TensorFlow dựa trên tính toán đồ thị; nó cho phép nhà phát triển trực quan hóa việc xây dựng mạng nơ-ron với Tensorboad. Công cụ này rất hữu ích để gỡ lỗi chương trình. Cuối cùng, Tensorflow được xây dựng để triển khai trên quy mô lớn. Nó chạy trên CPU và GPU.

Tensorflow nổi tiếng hơn bất kỳ các khung học sâu nào khác trên GitHub.

Ví dụ đơn giản về TensorFlow

nhập numpy dưới dạng np

nhập tensorflow dưới dạng tf

Trong hai dòng mã đầu tiên, bạn có thể thấy tensorflow được nhập dưới dạng tf. Với ngôn ngữ Python, việc sử dụng tên viết tắt cho thư viện là một thói quen phổ biến. Ưu điểm là tránh phải gõ tên đầy đủ của thư viện khi chúng ta cần sử dụng. Trong phần này, chúng ta sẽ thử thực hành quy trình làm việc cơ bản của Tensorflow với các ví dụ TensorFlow đơn giản. Hãy tạo một đồ thị tính toán nhân hai số với nhau.

Giả sử 2 số đó là X_1 và X_2. Tensorflow sẽ tạo một nút để kết nối hoạt động, nút này sẽ là dấu nhân trong ví dụ này. Khi đồ thị được xác định, các công cụ tính toán Tensorflow sẽ nhân X_1 và X_2 với nhau.

Cuối cùng, chúng tôi sẽ chạy một phiên TensorFlow để chạy biểu đồ tính toán với các giá trị của X_1 và X_2 và in kết quả của phép nhân.

Coi X_1 và X_2 là nút đầu vào. Khi chúng ta tạo một nút trong Tensorflow, chúng ta phải chọn loại nút để tạo. Các nút X1 và X2 sẽ là một nút giữ chỗ. Trình giữ chỗ chỉ định một giá trị mới mỗi khi chúng ta thực hiện một phép tính. Chúng ta sẽ tạo chúng dưới dạng nút giữ chỗ chấm TF.

Bước 1: Xác định biến

X_1 = tf.placeholder (tf.float32, name = "X_1")

X_2 = tf.placeholder (tf.float32, name = "X_2")

Khi chúng ta tạo một nút giữ chỗ, chúng ta cũng cần đặt tên cho nút này. Tên này sẽ hiển thị khi chúng ta nhìn vào hình ảnh đồ họa của mô hình. Hãy đặt tên cho nút này là X_1 bằng cách chuyển vào một tham số được gọi là tên với giá trị là X_1 và X_2 cũng làm tương tự như vậy.

Bước 2: Xác định tính toán

nhân = tf.multiply (X_1, X_2, name = "nhân")

Bây giờ chúng ta có thể xác định nút thực hiện phép nhân. Trong Tensorflow, chúng ta có thể làm điều đó bằng cách tạo một nút tf.multiply.

Bước 3: Thực hiện thao tác

Để thực hiện các hoạt động trong biểu đồ, chúng ta phải tạo một phiên. Trong Tensorflow, nó được thực hiện bởi tf.Session (). Khi đã có một phiên, chúng ta có thể yêu cầu phiên chạy các hoạt động trên đồ thị tính toán bằng cách gọi phiên. Để chạy tính toán, chúng ta cần sử dụng run và cung cấp các giá trị cho X_1 và X_2. Làm điều này bằng cách cung cấp một tham số được gọi là feed_dict. Chúng ta sẽ chuyển giá trị 1,2,3 cho X_1 và 4,5,6 cho X_2. Kết quả sẽ hiển thị như bên dưới đây:

X_1 = tf.placeholder (tf.float32, name = "X_1")

X_2 = tf.placeholder (tf.float32, name = "X_2")

nhân = tf.multiply (X_1, X_2, name = "nhân")

với tf.Session () là phiên:

    result = session.run (nhân, feed_dict = {X_1: [1,2,3], X_2: [4,5,6]})

    in (kết quả)

[4. 10. 18.]

Lý do bạn nên sử dụng TensorFlow

Mang đến góc nhìn khách quan

Lập trình machine learning là công việc phức tạp và tốn nhiều thời gian, yêu cầu bạn xử lý nhiều vấn đề như chuyển đổi đầu ra của một chức năng thành đầu vào cho chức năng khác và triển khai các thuật toán. Tensorflow được phát triển nhằm đơn giản hóa quy trình này.

Với khả năng xử lý khối lượng công việc lớn, Tensorflow giúp bạn loại bỏ những tình huống rườm rà và tập trung vào việc kiểm tra logic của dự án. Dữ liệu phong phú từ Tensorflow cho phép các nhà phát triển có được góc nhìn khách quan hơn về kế hoạch của mình, từ đó đưa ra những quyết định phát triển chính xác hơn.

Chỉnh sửa dữ liệu dễ dàng

Một trong những tính năng nổi bật nhất của Tensorflow là khả năng chỉnh sửa dữ liệu. Là một thư viện lập trình, dữ liệu đóng vai trò quan trọng nhất trong việc đánh giá hiệu suất của Tensorflow. Tính năng Eager execution cho phép người dùng điều chỉnh biểu đồ dữ liệu và đánh giá tác động của các thay đổi đối với kết quả.

Tính năng này không chỉ giúp bạn dự đoán tương lai của dự án mà còn giúp bạn lựa chọn giữa nhiều phương án khác nhau. Thông tin mà Eager execution cung cấp sẽ được sử dụng để dự đoán kết quả cho từng phương án, giúp bạn tổng hợp và so sánh để tìm ra lựa chọn tốt nhất.

Tiềm năng phát triển mạnh mẽ

Tensorflow được phát triển bởi Google, một trong những công ty công nghệ hàng đầu thế giới, tạo niềm tin rằng nó sẽ tiếp tục được nâng cấp mạnh mẽ trong tương lai. Với tính chất là một ứng dụng mã nguồn mở, người dùng có thể tự do phát triển và tùy chỉnh Tensorflow theo nhu cầu cá nhân.

Bạn có thể tham gia vào cộng đồng người dùng Tensorflow để mở rộng kiến thức và khả năng ứng dụng. Điều này không chỉ giúp bạn cập nhật thông tin mới mà còn cho phép bạn điều chỉnh Tensorflow để phục vụ các mục đích cụ thể của dự án hoặc công việc của mình.

Tổng kết

Vậy là chúng ta đã cùng nhau đi tìm hiểu sâu về thư viện học sâu nổi tiếng nhất những năm gần đây - TensorFlow. Một học viên có thể hiểu TensorFlow là gì có thể sử dụng TensorFlow để xây dựng bất kỳ cấu trúc học sâu nào, như CNN, RNN hoặc mạng nơ-ron nhân tạo đơn giản. TensorFlow chủ yếu được sử dụng bởi các nhà khoa học, công ty khởi nghiệp và các công ty lớn. Google sử dụng TensorFlow trong hầu hết các sản phẩm hàng ngày của Google bao gồm Gmail, Photo và Google Search Engine. Việc nắm vững TensorFlow là gì sẽ giúp ích rất nhiều cho bạn trong các công việc liên quan đến học máy sau này.

SHARE