Thư Viện Tensorflow Là Gì ? Tìm Hiểu Về Tensoflow Từ A Đến Z

Phần I.2 Tensorflow và bài toán Hồi quy đơn giản đầu tiênTL;DR

Qua bài viết trước, chúng ta đã biết được đến sự tồn tại của một vài khái niệm cơ bản trong Machine Learning. Tiếp theo chúng ta sẽ đi sâu vào cách để giải những bài toán này. Cũng như mình đã nói trong bài viết trước. Machine Learning sử dụng rất nhiều đến kiến thức toán cũng như xác suất thống kê. Việc này làm cho việc tiếp cận với Machine Learning trở nên không được phổ thông. Chính vì vậy, mình muốn giới thiệu đến các bạn những bộ công cụ hỗ trợ việc thực hành Machine Learning. Mình không nói rằng toán trở nên bớt quan trọng nhưng theo quan điểm của mình, việc làm đơn giản hóa một vài phần để học từng bước từng bước một thì việc học sẽ trở nên bớt đau đớn hơn.

Đang xem: Tensorflow là gì

Hiện tại với công việc của mình, vì lí do dân tộc mà người Nhật họ yêu cầu bắt buộc là phải dùng Chainer. (Hay ít nhất là công ty mình yêu cầu phải dùng) Thư viện này có tốc độ training và predict khá nhanh. Hỗ trợ graph(Biểu đồ) rất trực quan. Tuy nhiên cấu trúc API cá nhân mình thấy là trúc trắc, cộng đồng nhỏ, hẹp lại thiên về hướng Nhật ngữ nên không phù hợp để làm giảm đau đớn trong quá trình học.

Thư viện được mình lựa chọn là Tensorflow. Đây là một thư viện có năng lực không hề thua kém Chainer, cấu trúc API rõ ràng hơn cộng với sử dụng rất nhiều kĩ thuật trong Machine Learning nên rất phù hợp trong quá trình học ở mức cơ bản.Trong bài viết này sẽ giới thiệu Tensorflow là gì và thực hành một bài toán nhập môn với Tensorflow.

Tensorflow là gì?

Theo định nghĩa của Google thì:

TensorFlow™ is an open source software library for numerical computation using data flow graphs. Nodes in the graph represent mathematical operations, while the graph edges represent the multidimensional data arrays (tensors) communicated between them. The flexible architecture allows you to deploy computation to one or more CPUs or GPUs in a desktop, server, or mobile device with a single API. TensorFlow was originally developed by researchers and engineers working on the Google Brain Team within Google”s Machine Intelligence research organization for the purposes of conducting machine learning and deep neural networks research, but the system is general enough to be applicable in a wide variety of other domains as well.

Quá dài và quá khó hiểu. Nếu hiểu theo cách của mình thì Tensorflow là một thư viện mã nguồn mở cung cấp khả năng xử lí tính toán số học dựa trên biểu đồ mô tả sự thay đổi của dữ liệu. Tensor được sử dụng khi bạn cần giải quyết các bài toán supervised learning.

*

Hình 1.1: Ví dụ về một graph trong Tensorflow

Khái niệm cơ bản trong Tensorflow

Khi thực hành với Tensorflow, sẽ có rất nhiều khái niệm phức tạp. Tuy nhiên chỉ ở mức cơ bản, chúng ta sẽ đi đến khái niệm quan trọng nhất trong Tensorflow là Tensor.

Node

Vì Tensorflow mô tả lại dòng chảy của dữ liệu thông qua graph nên mỗi một điểm giao cắt trong graph thì được gọi là Node. Tại sao điều này quan trọng thì là vì các Node chính là điểm đại diện cho việc thay đổi của dữ liệu nên việc lưu trữ lại tham chiếu của các Node này là rất quan trọng.

Tensor

Như trong bài viết trước mình có đề cập, để giải được các bài toán Machine Learning, cần phải làm cho máy tính có thể hiểu được dữ liệu của tập nguồn và dữ liệu của tập đích. Tensorflow cung cấp một loại dữ liệu mới được gọi là Tensor. Trong thế giới của Tensorflow, mọi kiểu dữ liệu đều được quy về một mối được gọi là Tensor hay trong Tensorflow, tất cả các loại dữ liệu đều là Tensor. Vậy nên có thể hiểu được phần nào cái tên Tensorflow là một thư viện mô tả, điều chỉnh dòng chảy của các Tensor.

device: Tên của thiết bị mà Tensor hiện tại sẽ được xuất bản. Có thể None.graph: Đồ thị chứa Tensor hiện tại.name: Tên của Tensor hiện tại.shape: Trả về TensorShape mô tả lại Shape của Tensor hiện tại.

Xem thêm: Ign Game Là Gì – Inverted Vs Normal Game Controls

op: Operation(Toán tử / Phép toán) được sử dụng để xuất bản Tensor hiện tại.dtype: Kiểu của các elements(Phần tử) trong Tensor hiện tại.RankScalar: Khi Tensor có rank bằng 0, Tensor đại diện cho một số hoặc một chuỗi cụ thể. Ví dụ: scalar=123.Matrix: Đây là một Tensor rank 2 hay mảng hai chiều theo khái niệm của Python. Ví dụ: matrix=<<1,2>,<2,1>>.N-Tensor: Khi rank của Tensor tăng lên lớn hơn 2, chúng được gọi chung là N-Tensor.

*

Hình 1.2: Ví dụ minh họa về Tensor

Shape là một tupledimention(Số chiều) bằng với rank của Tensor tương ứng dùng để mô tả lại cấu trúc của Tensor đó. Dưới đây là ví dụ về Shape.

Dựa vào cấu trúc của Shape, ta dễ dàng thấy rằng ràng buộc cơ bản của Tensor là chiều của các elements trong Tensor tại mỗi bậc phải bằng nhau. Dưới đây là ví dụ báo lỗi của Tensorflow.

*

Hình 1.3: Báo lỗi của Tensorflow khi khai báo một Tensor không hợp lệ

Op

Được viết tắt là op, khái niệm Operator là toán tử được dùng để thực thi Tensor tại node đó. Các toán tử này có thể là Const(Hằng số), Variable(Biến số), Add(Phép cộng), Mul(Phép nhân)… Đôi khi mình cảm thấy việc dịch là toán tử cũng không hợp lí bởi lẽ các toán tử này đôi khi lại mô tả Node là Constant hay Variable. Có thể nói, khái niệm operator trong Tensorflow là khái niệm dùng để mô tả lại trạng thái của Node nói chung.

DType

Đây là kiểu dữ liệu của các elements trong Tensor. Vì một Tensor chỉ có duy nhất một thuộc tính DType nên từ đó cũng suy ra là chỉ có duy nhất một kiểu DType duy nhất cho toàn bộ các elements có trong Tensor hiện tại. Bảng danh sách các Dtype khả dụng tra cứu tại đây. Việc tạo ra hơn một DType khác nhau cho các elements của Tensor là không khả dụng. Hiện có hack hay trick nào chưa thì mình chưa rõ nhưng kể cả khi bạn thực hiện các phép toán thì cũng không thể làm điều đó được.

Hello world với Tensorflow

Phần quan trọng tiếp theo là bạn ít ra cũng phải thực hành được một bài toán nào đó với Tensorflow chứ. Nội dung bên dưới là cách thức cài đặt Tensorflow và cách thức giải một bài toán Supervised Learn đơn giản thông qua một thuật toán thuộc nhóm Regression. Vì đây là This Year I Learned nên phần bên dưới là nội dung mô tả về trải nghiệm của mình. Không phải là bài hướng dẫn.

Hello world

Như đã quen thuộc với tất cả mọi lập trình viên trên thế giới. Bài toán Hellowork là bài toán đơn giản nhất nhằm chỉ ra cách cài đặt và chạy thử nghiệm một chương trình hoặc thuật toán bất kì. Để install được Tensorflow, thư viện đòi hỏi ta phải thực hiện vô cùng nhiều bước cài đặt nên cách mình lựa chọn là sử dụng Docker. Docker sẽ cung cấp cho ta một máy ảo (Hiện tại máy ảo của Docker chỉ hỗ trợ Linux) có thiết lập sẵn môi trường làm việc cần thiết cho một dự án phát triển nào đó.

Xem thêm: Cách Khắc Chế Hecarim Đi Rừng Cho Từng Vị Trí, Hướng Dẫn Khắc Chế Hecarim Mùa 11

Thiết bị mình dùng là một con Workstion cài Ubuntu. Mình sử dụng câu lệnh sau để thiết lập môi trường cho Docker.

$ sudo apt-get instatll docker$ docker run -it gcr.io/tensorflow/tensorflow bashThông thường thì theo kinh nghiệm bản thân thì mỗi lần train cho project khá tốn thời gian. Mỗi lần đổi quyết định về model sử dụng, mình phải train lại con máy hết tầm khoảng hơn một ngày làm việc chỉ để nó tự blend ảnh theo phong cách cho mình. Vậy nên trong khoảng thời gian train mà có ông nào vô tình đi qua đạp dây mạng của mình chắc mình tức lòi mắt ra mất. Cách tốt nhất để hạn chế mấy rủi ro kiểu này là sự dụng tmux. Đây là tùy chọn, các bạn có thể làm theo hoặc không. Tuy nhiên dùng tmux thì Cr7 xong sẽ thấy nó cool hơn. 😀

Sau khi chạy lệnh để khởi động Docker, bạn sẽ được đưa đến con trỏ ở vị trí sau: