You are on page 1of 11

TensorFlow là một thư viện mã nguồn mở thân thiện với Python để tính toán số giúp học máy

nhanh hơn và dễ dàng hơn

Học máy là một bộ môn phức tạp. Nhưng việc triển khai các mô hình học máy không còn nhiều
khó khăn và khó khăn hơn trước đây, nhờ các khuôn khổ học máy — chẳng hạn như TensorFlow
của Google — giúp dễ dàng quá trình thu thập dữ liệu, mô hình đào tạo, cung cấp dự đoán và
tinh chỉnh kết quả trong tương lai.

Được tạo bởi nhóm Google Brain, TensorFlow là một thư viện mã nguồn mở để tính toán số và
học máy quy mô lớn. TensorFlow kết hợp một loạt các mô hình và thuật toán học máy và học
sâu (hay còn gọi là mạng thần kinh) và làm cho chúng trở nên hữu ích bằng một phép ẩn dụ
thông thường. Nó sử dụng Python để cung cấp một API front-end thuận tiện cho việc xây dựng
các ứng dụng với framework, đồng thời thực thi các ứng dụng đó bằng C ++ hiệu suất cao.

TensorFlow có thể đào tạo và chạy các mạng nơ-ron sâu để phân loại chữ số viết tay, nhận dạng
hình ảnh, nhúng từ, mạng nơ-ron lặp lại, mô hình tuần tự để dịch máy, xử lý ngôn ngữ tự nhiên
và mô phỏng dựa trên PDE (phương trình vi phân từng phần). Hơn hết, TensorFlow hỗ trợ dự
đoán sản xuất trên quy mô lớn, với các mô hình tương tự được sử dụng để đào tạo.

How TensorFlow works


TensorFlow cho phép các nhà phát triển tạo biểu đồ luồng dữ liệu — cấu trúc mô tả cách dữ liệu
di chuyển qua biểu đồ hoặc một loạt các nút xử lý. Mỗi nút trong biểu đồ đại diện cho một phép
toán và mỗi kết nối hoặc cạnh giữa các nút là một mảng dữ liệu đa chiều, hoặc tensor.

TensorFlow cung cấp tất cả những điều này cho lập trình viên bằng ngôn ngữ Python. Python rất
dễ học và làm việc, đồng thời cung cấp các cách thuận tiện để diễn đạt cách các phần trừu tượng
cấp cao có thể được kết hợp với nhau. Các nút và tensor trong TensorFlow là các đối tượng
Python, và các ứng dụng TensorFlow chính là các ứng dụng Python.

Tuy nhiên, các phép toán thực tế không được thực hiện bằng Python. Thư viện các phép biến đổi
có sẵn thông qua TensorFlow được viết dưới dạng mã nhị phân C ++ hiệu suất cao. Python chỉ
định hướng lưu lượng truy cập giữa các phần và cung cấp các phần trừu tượng lập trình cấp cao
để kết nối chúng lại với nhau.

Các ứng dụng TensorFlow có thể chạy trên hầu hết mọi mục tiêu thuận tiện: máy cục bộ, cụm
trên đám mây, thiết bị iOS và Android, CPU hoặc GPU. Nếu sử dụng đám mây của riêng
Google, bạn có thể chạy TensorFlow trên silicon Bộ xử lý TensorFlow (TPU) tùy chỉnh của
Google để tăng tốc hơn nữa. Tuy nhiên, các mô hình kết quả được tạo bởi TensorFlow có thể
được triển khai trên hầu hết mọi thiết bị nơi chúng sẽ được sử dụng để phục vụ các dự đoán.

TensorFlow 2.0, được phát hành vào tháng 10 năm 2019, đã cải tiến khung theo nhiều cách dựa
trên phản hồi của người dùng, để làm việc dễ dàng hơn (ví dụ: bằng cách sử dụng API Keras
tương đối đơn giản để đào tạo mô hình) và hiệu quả hơn. Đào tạo phân tán dễ chạy hơn nhờ có
API mới và hỗ trợ cho TensorFlow Lite giúp bạn có thể triển khai các mô hình trên nhiều nền
tảng khác nhau. Tuy nhiên, mã được viết cho các phiên bản trước của TensorFlow phải được viết
lại — đôi khi chỉ một chút, đôi khi đáng kể — để tận dụng tối đa các tính năng mới của
TensorFlow 2.0.

TensorFlow benefits

Lợi ích lớn nhất mà TensorFlow cung cấp cho việc phát triển máy học là tính trừu tượng. Thay vì
xử lý các chi tiết phức tạp của việc triển khai các thuật toán hoặc tìm ra cách thích hợp để chuyển
đầu ra của một chức năng này với đầu vào của chức năng khác, nhà phát triển có thể tập trung
vào logic tổng thể của ứng dụng. TensorFlow chăm chút cho các chi tiết đằng sau hậu trường.

TensorFlow cung cấp các tiện ích bổ sung cho các nhà phát triển cần gỡ lỗi và tìm hiểu nội dung
ứng dụng TensorFlow. Chế độ thực thi háo hức cho phép bạn đánh giá và sửa đổi từng thao tác
biểu đồ một cách riêng biệt và minh bạch, thay vì xây dựng toàn bộ biểu đồ dưới dạng một đối
tượng mờ và đánh giá tất cả cùng một lúc. Bộ phần mềm trực quan hóa TensorBoard cho phép
bạn kiểm tra và lập hồ sơ cách đồ thị chạy bằng bảng điều khiển dựa trên web, tương tác.

TensorFlow cũng đạt được nhiều lợi thế từ sự hỗ trợ của trang phục thương mại hạng A trên
Google. Google không chỉ thúc đẩy tốc độ phát triển nhanh chóng đằng sau dự án mà còn tạo ra
nhiều dịch vụ quan trọng xung quanh TensorFlow giúp triển khai dễ dàng hơn và dễ sử dụng
hơn: silicon TPU nói trên để tăng tốc hiệu suất trong đám mây của Google; một trung tâm trực
tuyến để chia sẻ các mô hình được tạo ra với khuôn khổ; trong trình duyệt và thân thiện với thiết
bị di động của khuôn khổ; và nhiều hơn nữa.

Một lưu ý: Một số chi tiết trong quá trình triển khai của TensorFlow khiến khó có thể thu được
kết quả đào tạo theo mô hình hoàn toàn xác định cho một số công việc đào tạo. Đôi khi một mô
hình được đào tạo trên một hệ thống sẽ hơi khác so với một mô hình được đào tạo trên một hệ
thống khác, ngay cả khi chúng được cung cấp cùng một dữ liệu chính xác. Các lý do cho điều
này là trơn tru — ví dụ: cách các số ngẫu nhiên được bắt đầu và ở đâu, hoặc một số hành vi
không xác định nhất định khi sử dụng GPU). Điều đó nói rằng, có thể giải quyết những vấn đề
đó và nhóm của TensorFlow đang xem xét thêm các biện pháp kiểm soát để ảnh hưởng đến tính
xác định trong quy trình làm việc.

Why TensorFlow always tops machine learning and artificial


intelligence tool surveys
Bạn đã bao giờ nghĩ, tại sao TensorFlow lại trở nên phổ biến trong một khoảng thời gian ngắn
như vậy? Điều gì đã làm cho TensorFlow trở nên đặc biệt đến nỗi chúng ta thấy một lượng lớn
các nhà phát triển và nhà nghiên cứu lựa chọn cho khung TensorFlow?
triển khai trong TensorFlow trước tiên cho phép Google sản xuất những ý tưởng đó.

What makes TensorFlow different from the rest?


TensorFlow key functionalities

TensorFlow cung cấp một cú pháp có thể truy cập và dễ đọc, điều cần thiết để làm cho các tài
nguyên lập trình này dễ sử dụng hơn.

TensorFlow cung cấp các chức năng và dịch vụ tuyệt vời khi so sánh với các khuôn khổ học sâu
phổ biến khác. Các hoạt động cấp cao này rất cần thiết để thực hiện các phép tính song song
phức tạp và để xây dựng các mô hình mạng nơ-ron tiên tiến.

TensorFlow là một thư viện cấp thấp cung cấp tính linh hoạt hơn. Vì vậy, bạn có thể xác định
các chức năng hoặc dịch vụ của riêng bạn cho các mô hình của bạn. Đây là một thông số rất quan
trọng đối với các nhà nghiên cứu vì nó cho phép họ thay đổi mô hình dựa trên sự thay đổi yêu
cầu của người dùng.

TensorFlow cung cấp nhiều quyền kiểm soát mạng hơn. Do đó, cho phép các nhà phát triển và
nhà nghiên cứu hiểu cách các hoạt động được thực hiện trên mạng. Họ luôn có thể theo dõi các
thay đổi mới được thực hiện theo thời gian.

================================
Mục đích của cuốn sách này là giới thiệu cho độc giả phiên bản mới nhất của
Thư viện TensorFlow. Do đó, chương đầu tiên này tập trung chủ yếu vào những gì đã
đã thay đổi trong thư viện TensorFlow kể từ phiên bản đầu tiên của nó, TensorFlow 1.0.
Chúng tôi sẽ đề cập đến các thay đổi khác nhau, ngoài việc làm nổi bật các
các phần mà các thay đổi vẫn chưa được giới thiệu. Chương này được chia
thành ba phần: phần đầu tiên thảo luận về nội dung của TensorFlow;
thứ hai tập trung vào những thay đổi đã được triển khai trong
TensorFlow 2.0 sau TensorFlow 1.0; và phần cuối cùng bao gồm
Các phương pháp cài đặt TensorFlow 2.0 và các thao tác cơ bản.
Tensor + Flow = TensorFlow

Tensors là khối xây dựng của TensorFlow, vì tất cả các tính toán đều
được thực hiện bằng cách sử dụng tensors. Vậy, tensor chính xác là gì?

Theo định nghĩa do nhóm TensorFlow của Google cung cấp,


Một tensor là một tổng quát của vectơ và ma trận cho các kích thước tiềm năng cao
hơn. Trong nội bộ, TensorFlow đại diện cho
tenxơ dưới dạng mảng n chiều của kiểu dữ liệu cơ sở.

Nhưng chúng tôi muốn nghiên cứu sâu hơn một chút về tensors, để
cung cấp nhiều hơn một tổng quan chung về những gì họ đang có. Chúng tôi muốn
so sánh chúng với vectơ hoặc ma trận, để làm nổi bật động chính đặc tính làm cho
tensors mạnh mẽ như vậy. Hãy bắt đầu với một vector đơn giản.
Vectơ thường được hiểu là một thứ gì đó có độ lớn và
một hướng. Nói một cách đơn giản, nó là một mảng chứa danh sách các giá trị có thứ
tự.
Không có hướng của vectơ, tenxơ trở thành một giá trị vô hướng có
độ lớn duy nhất.
Một vectơ có thể được sử dụng để biểu diễn số thứ n. Nó có thể đại diện cho
khu vực và các thuộc tính khác nhau, trong số những thứ khác. Nhưng chúng ta hãy
vượt ra ngoài
chỉ độ lớn và hướng và cố gắng hiểu các thành phần thực
của một vectơ.

Tensor

Vào cuối ngày, tensor cũng là một thực thể toán học để
đại diện cho các thuộc tính khác nhau, tương tự như vô hướng, vectơ hoặc ma trận.
Đúng rồi
rằng tenxơ là một tổng quát của một vectơ hoặc vô hướng. Trong ngắn hạn, tenxơ là
mảng nhiều chiều có một số thuộc tính động. Một vectơ là một
tenxơ một chiều, trong khi tenxơ hai chiều là ma trận
(Hình 1-5).
Tensors can be of two types: constant or variable.

Rank
Xếp hạng căng thẳng đôi khi có thể gây nhầm lẫn cho một số người, nhưng xét về
của tenxơ, thứ hạng chỉ đơn giản cho biết số hướng cần thiết để
mô tả các thuộc tính của một đối tượng, nghĩa là kích thước của mảng
chứa trong chính tensor. Chia nhỏ điều này cho các đối tượng khác nhau, a
vô hướng không có bất kỳ hướng nào và do đó, tự động trở thành
hạng 0 tensor, trong khi một vectơ, có thể được mô tả chỉ bằng một
hướng, trở thành một tensor hạng nhất. Đối tượng tiếp theo, là một ma trận,
yêu cầu hai hướng để mô tả nó và trở thành một tensor hạng hai.

Shape
The shape of a tensor represents the number of values in each dimension.
Scalar—32: The shape of the tensor would be [ ].
Vector—[3, 4, 5]: The shape of the first rank tensor
would be [3].
Matrix =
123
456
789
: The second rank tensor would

have a shape of [3, 3].

Flow

Bây giờ đến phần thứ hai của TensorFlow: flow. Về cơ bản đây là một
khung tính toán đồ thị cơ bản sử dụng tensors cho
chấp hành. Một biểu đồ điển hình bao gồm hai thực thể: các nút và các cạnh, như
được thể hiện trong Hình 1-6. Các nút còn được gọi là đỉnh.

Các cạnh về cơ bản là kết nối giữa các nút / đỉnh


qua đó các luồng dữ liệu và các nút là nơi tính toán thực tế
diễn ra. Bây giờ, nói chung, biểu đồ có thể là chu kỳ hoặc xoay vòng, nhưng trong
TensorFlow, nó luôn hoạt động theo chu kỳ. Nó không thể bắt đầu và kết thúc ở cùng
một nút.
Hãy xem xét một biểu đồ tính toán đơn giản, như được hiển thị trong Hình 1-7 và
khám phá một số thuộc tính của nó.
Các nút trong biểu đồ chỉ ra một số loại tính toán, chẳng hạn như
cộng, nhân, chia, v.v., ngoại trừ các nút lá,
chứa các tenxơ thực tế với các giá trị không đổi hoặc thay đổi được
vận hành. Các lực căng này chảy qua các cạnh hoặc các kết nối
giữa các nút và việc tính toán ở nút tiếp theo dẫn đến sự hình thành
của một tensor mới. Vì vậy, trong đồ thị mẫu, một tensor m mới được tạo ra thông qua
một phép tính tại nút bằng cách sử dụng các tenxơ khác và y. Điều cần tập trung
trong biểu đồ này là việc tính toán chỉ diễn ra ở giai đoạn tiếp theo
sau các nút lá, vì các nút lá chỉ có thể là các tenxơ đơn giản, trở thành
đầu vào cho tính toán nút tiếp theo chảy qua các cạnh. Chúng tôi cũng có thể
đại diện cho các tính toán tại mỗi nút thông qua cấu trúc phân cấp.
Các nút ở cùng mức có thể được thực hiện song song, vì không có
sự phụ thuộc lẫn nhau giữa chúng. Trong trường hợp này, m và n có thể được tính
song song cùng một lúc. Thuộc tính này của biểu đồ giúp hành hình
đồ thị tính toán theo cách phân tán, cho phép TensorFlow
được sử dụng cho các ứng dụng quy mô lớn.
Using TensorFlow for AI Systems
Trước khi đi sâu hơn về TensorFlow là gì và các tính năng chính của nó, chúng ta sẽ
đưa ra một số ví dụ thú vị về cách TensorFlow được sử dụng trong một số các ứng
dụng trong thế giới thực, tại Google và hơn thế nữa.
Pre-trained models: state-of-the-art computer vision for al
Một lĩnh vực chính mà học sâu thực sự tỏa sáng là thị giác máy tính. Một quỹ‐ nhiệm vụ
trí óc trong thị giác máy tính là phân loại hình ảnh — xây dựng thuật toán và hệ thống‐
các tem nhận hình ảnh làm đầu vào và trả về một tập hợp các danh mục mô tả tốt nhất
họ. Các nhà nghiên cứu, nhà khoa học dữ liệu và kỹ sư đã thiết kế mạng thu được kết
quả chính xác cao trong việc hiểu nội dung trực quan. Này mạng sâu thường được đào
tạo về lượng lớn dữ liệu hình ảnh, chiếm nhiều thời gian, nguồn lực và nỗ lực. Tuy
nhiên, trong xu hướng ngày càng phát triển, các nhà nghiên cứu đang công khai phát
hành các mô hình được đào tạo trước — mạng lưới thần kinh sâu đã được đào tạo và
người dùng có thể tải xuống và áp dụng cho dữ liệu của họ

Generating rich natural language descriptions for images


Một lĩnh vực thú vị của nghiên cứu học sâu để xây dựng hệ thống trí tuệ máy tập trung
vào việc tạo ra các mô tả ngôn ngữ tự nhiên cho nội dung trực quan (Hình 1-3). Một
nhiệm vụ chính trong lĩnh vực này là chú thích hình ảnh — dạy mô hình để đầu ra cô
đọng và chú thích chính xác cho hình ảnh. Ở đây cũng vậy, các mô hình TensorFlow
được đào tạo trước nâng cao kết hợp khả năng hiểu ngôn ngữ tự nhiên với thị giác
máy tính.
Text summarization
Hiểu ngôn ngữ tự nhiên (NLU) là khả năng quan trọng để xây dựng hệ thống AI. Một
lượng lớn văn bản được tạo ra mỗi ngày: nội dung web, mạng xã hội, tin tức, email, thư
từ nội bộ của công ty và nhiều hơn nữa. Một trong những khả năng được tìm kiếm là
tóm tắt văn bản, lấy các tài liệu dài và tạo câu ngắn gọn và mạch lạc trích xuất thông tin
chính từ bản gốc văn bản (Hình 1-4). Như chúng ta sẽ thấy ở phần sau của cuốn sách
này, TensorFlow đi kèm với các tính năng để đào tạo mạng NLU sâu, cũng có thể được
sử dụng cho văn bản tự động sự tóm tắt.
Figure 1-4. An illustration of smart text summarization.
TensorFlow: What’s in a Name?
Mạng nơron sâu, như thuật ngữ và các hình minh họa mà chúng tôi đã trình bày ngụ ý,
đều là
về mạng lưới tế bào thần kinh, với mỗi tế bào thần kinh học cách thực hiện hoạt động
của riêng nó như một phần
của một bức tranh lớn hơn. Dữ liệu như hình ảnh đi vào mạng này dưới dạng đầu vào
và các luồng
thông qua mạng vì nó tự điều chỉnh tại thời điểm đào tạo hoặc dự đoán kết quả đầu ra
trong
hệ thống đã triển khai.

Tensors là cách tiêu chuẩn để biểu diễn dữ liệu trong học sâu. Nói một cách đơn giản,
mười‐
sors chỉ là mảng nhiều chiều, một phần mở rộng của bảng hai chiều (matri‐
ces) tới dữ liệu có kích thước cao hơn. Cũng giống như hình ảnh đen trắng (thang độ
xám)
được biểu diễn dưới dạng "bảng" của các giá trị pixel, hình ảnh RGB được biểu diễn
dưới dạng tenxơ
(mảng ba chiều), với mỗi pixel có ba giá trị tương ứng với màu đỏ,
các thành phần màu xanh lá cây và xanh lam.

Trong TensorFlow, tính toán được tiếp cận dưới dạng đồ thị luồng dữ liệu (Hình 1-5).
Rộng rãi nói, trong biểu đồ này, các nút đại diện cho các phép toán (chẳng hạn như
phép cộng hoặc phép nhân‐ tion), và các cạnh đại diện cho dữ liệu (tensors) chảy xung
quanh hệ thống. Trong chương tiếp theo‐ ters, chúng ta sẽ đi sâu hơn vào những khái
niệm này và học cách hiểu chúng với nhiều các ví dụ.

You might also like