TensorFlow là một thư viện máy học mã nguồn mở, do Google phát minh và được sử dụng để thiết kế, xây dựng và đào tạo các mô hình học sâu. TensorFlow là một thư viện để lập trình luồng dữ liệu. Nó có nhiều kỹ thuật tối ưu hóa để làm cho độ phức tạp của biểu thức toán học dễ dàng hơn và hiệu quả hơn.
Dưới đây là một số tính năng chính của TensorFlow:
- Nó hoạt động hiệu quả với các biểu thức toán học của mảng nhiều chiều.
- Nó có tính toán GPU / CPU do đó chúng tôi có thể thực thi cùng một mã trên cả hai kiến trúc.
- Nó có sự hỗ trợ tuyệt vời của các khái niệm học máy và mạng nơ-ron sâu
- Nó có khả năng mở rộng cao để tính toán trên các máy và tập dữ liệu lớn.
- Nhìn chung, những tính năng chính này làm cho TensorFlow trở thành một khuôn khổ hoàn hảo cho trí thông minh của máy móc.
Các bài viết liên quan:
Tensors là gì?
Trước khi hiểu TensorFlow và cách thức hoạt động của nó, trước tiên chúng ta hãy hiểu Tensor thực sự là gì.
Một tensor là một biểu diễn toán học của một thực thể vật lý có thể được mô tả theo nhiều hướng hoặc nhiều độ lớn. Tensors là mảng nhiều chiều của các kiểu dữ liệu cơ sở. Mỗi phần tử trong Tensor có cùng một kiểu dữ liệu. Tensor bao gồm 2 thuộc tính chính: Kiểu dữ liệu và Hình dạng. Kiểu dữ liệu của Tensor luôn được biết trong khi hình dạng của nó có thể được biết một phần. Hình dạng tensor được định nghĩa là số kích thước mà nó có và kích thước của mỗi chiều.
Trong khi viết mã TensorFlow, bạn thường làm việc với một đối tượng Tensor được gọi là tf.Tensor. Đối tượng này là một đại diện của một phép tính được xác định một phần, sẽ tạo ra một giá trị ở cuối. Tensor được xác định bằng thứ hạng của nó. Thứ hạng của Tensor không là gì khác ngoài số thứ nguyên của nó. Tensor được mô tả bằng cách sử dụng 3 quy ước ký hiệu – thứ hạng, hình dạng và số thứ nguyên. Mỗi thứ hạng ở đây được gắn với một thực thể toán học khác nhau như được mô tả bên dưới:
Dataflow Graph trong TensorFlow
TensorFlow được tạo thành từ Tensor và Flow. Tensor là sự biểu diễn dữ liệu thành các mảng nhiều chiều. Luồng được định nghĩa là chuỗi các hoạt động được thực hiện trên các Tensor này.
Hãy cùng chúng tôi khám phá biểu đồ luồng dữ liệu là gì. Các phép tính được biểu diễn dưới dạng đồ thị luồng dữ liệu. Các cạnh là Độ căng chảy qua biểu đồ, (mảng nhiều chiều) trong khi các nút là các hoạt động.
Các cạnh trong TensorFlow có thể được phân loại thành 2 nhóm:
1. Các cạnh bình thường: Chúng chuyển các tensor và đầu ra của một hoạt động có thể trở thành đầu vào cho hoạt động khác.
2. Các cạnh đặc biệt: Chúng kiểm soát sự phụ thuộc giữa hai nút và đặt tùy chọn và đợi một nút kết thúc
Kiến thức cơ bản về code TensorFlow
Constants, Variables, Sessions, và Placeholders
- Constants
Constants được tạo bằng cách sử dụng chữ ký bên dưới trong TensorFlow
Constants (value, dtype = None, shape = None, name = ‘cost’, verify_shape = false)
Ở đây, giá trị là một giá trị hằng số thực tế sẽ được sử dụng trong tính toán. Các hằng số đang lấy 0 đầu vào và tạo ra giá trị được lưu trữ không đổi làm đầu ra. Dưới đây là một ví dụ cho điều tương tự:
b = tf.constant (5)
- Variables
Trong TensorFlow, các biến được coi như một bộ đệm trong bộ nhớ chứa các tenxơ trong đó. Các biến này cần được khởi tạo một cách rõ ràng và được sử dụng để duy trì trạng thái trong đồ thị. Các biến có thể được định nghĩa như được đề cập dưới đây:
v = tf.Variable ([1], dtype = tf.float32)
Ở đây, kiểu dữ liệu là tùy chọn. Nếu chúng tôi không xác định kiểu dữ liệu của bất kỳ biến nào, TensorFlow sẽ quyết định loại biến từ giá trị đã khởi tạo.
Chúng ta cần khởi tạo các biến một cách rõ ràng trước khi sử dụng chúng trong biểu đồ. Dưới đây là các lệnh để khởi tạo các biến trước khi sử dụng chúng trong biểu đồ lần đầu tiên:
init = tf.global_variables_initializer () sess.run (init)
- Placeholders
Placeholders giống với một hằng số hoặc một biến lưu trữ value trong đó. Nhưng sự khác biệt duy nhất mà nó sở hữu là giá trị sẽ được cung cấp cho trình giữ chỗ trong thời gian chạy. Cú pháp cho trình giữ chỗ được đề cập bên dưới:
Placeholders (dtype, shape = None, name = None)
Một tensor trình giữ chỗ phải cung cấp dữ liệu trong khi thời gian chạy luồng khác sẽ tạo ra lỗi. Trình giữ chỗ làm cho biểu đồ tính toán về bản chất chung. Chúng ta có thể chạy cùng một đoạn mã với các giá trị khác nhau nhiều lần mà không cần viết đi viết lại cùng một đoạn mã cho các giá trị khác nhau.
Sessions
Bất kỳ đồ thị tính toán nào chạy trong một phiên sẽ đánh giá giá trị thực của các nút. Một phiên được định nghĩa là trạng thái và điều khiển của thời gian chạy TensorFlow. Nó lưu trữ theo thứ tự tất cả các hoạt động sẽ được thực hiện và chuyển kết quả của một nút đến nút tiếp theo trong đường ống.
Làm thế nào để xây dựng và chạy một Đồ thị tính toán?
Kiến trúc chương trình TensorFlow chủ yếu được chia thành 2 bước:
- Xây dựng đồ thị tính toán
Đồ thị tính toán là một đồ thị có hướng trong đó các nút là các biến và các cạnh là các phép toán trên các biến đó. Các hoạt động được cung cấp với các giá trị thay đổi và chúng cũng có thể chuyển đầu ra của mình cho các hoạt động khác. Các giá trị này được đưa vào các nút và đi ra khỏi các nút được gọi là Tensors.
Hãy để chúng tôi hiểu thêm về đồ thị tính toán thông qua ví dụ dưới đây:
Xét một hàm C: R2 → R trong đó c (a, b) = a + b
Đồ thị tính toán này tính tổng các biến đầu vào a và b và lưu trữ nó vào c. Đồ thị tính toán cung cấp một cách thay thế để thực hiện các phép tính toán học. Các hoạt động được gán cho các nút khác nhau có thể được thực hiện song song giúp cải thiện hiệu suất trong tính toán.
Mẫu mã cho đồ thị tính toán ở trên như sau:
import tensorflow as tf a = tf.constant(3.0) b = tf.constant(4.0) c = a + b
Khái niệm này cho thấy tính hữu dụng của nó khi các phép tính trở nên phức tạp hơn.
Ví dụ: biểu thức mô hình hồi quy tuyến tính c (A, x, b) = Ax + b. Chúng ta sẽ xem cách chúng ta tạo đồ thị tính toán hồi quy tuyến tính sâu hơn trong bài viết này.
- Chạy một đồ thị tính toán
Để chạy một đồ thị tính toán, chúng ta cần một phiên để thực hiện các hoạt động. Phiên cung cấp quyền kiểm soát và trạng thái của thời gian chạy TensorFlow. Phiên chứa chuỗi các hoạt động và chuyển kết quả của một phép tính này sang một phép tính khác.
Dưới đây là đoạn mã cho thấy cách chúng ta có thể chạy ví dụ tổng ở trên vào một phiên và tính toán kết quả đầu ra:
session = tf.Session() output = session.run(c) print(output)
Đây là cách biểu đồ tính toán hoạt động trong một phiên. Trong khi xây dựng biểu đồ, chúng ta cần đảm bảo các thao tác theo đúng thứ tự.
Linear Regression Model vơi TensorFlow
Mô hình hồi quy tuyến tính được sử dụng để đánh giá biến phụ thuộc từ các biến đã biết khác bằng phương trình hồi quy tuyến tính. Đồ thị tính toán cho biểu thức tuyến tính c (A, x, b) = Ax + b như sau:
Đối với điều này, chúng ta cần 4 biến
- Biến đầu ra C
- Biến đầu vào x
- Biến độ dốc A
- Y-Intercept hoặc thiên vị – b
Bây giờ, hãy triển khai mã cho TensorFlow này.
# Creating slope variable with initial value as 0.5 A = tf.Variable([.5], tf.float32) #Creating bias variable b for with initial value as -0.5 b = tf.Variable([-0.5], tf.float32) # Creating placeholders for providing input or independent variable x x = tf.placeholder(tf.float32) # Equation of Linear Regression linear_exp = A * x + b # Initializing all the variables with below commands s = tf.Session() i = tf.global_variables_initializer() s.run(i) # Running linear regression model to compute the output for provided x values print(s.run(linear_exp {x: [1,2,3]}))
Trong khi xây dựng mô hình hồi quy, chúng ta cần cân nhắc 2 điều:
Đầu ra được tính toán của chúng tôi với đầu ra mong muốn hoặc mục tiêu là bao xa?
Chúng ta cần đưa ra một cơ chế thích hợp để qua đó mô hình của chúng ta tự đào tạo dựa trên các đầu vào và đầu ra tương ứng đã cho.
Model Validation
Để xác thực mô hình, chúng tôi đang sử dụng hàm Loss để so sánh đầu ra của mô hình đào tạo của chúng tôi với đầu ra mong muốn hoặc mục tiêu. Có một hàm tổn thất phổ biến nhất cho mô hình hồi quy tuyến tính được gọi là S.S.E. (Tổng sai số bình phương).
- E = ½ * (t-y) 2
- E: Lỗi Bình phương Trung bình
- t: sản lượng mục tiêu
- y: sản lượng thực tế
- (t-y): lỗi
Nếu chúng ta nhận được giá trị tổn thất cao, thì chúng ta cần điều chỉnh độ lệch của biến vô hướng và biến trọng số để giảm lỗi mà chúng ta đang mắc phải.
Training the Model
Để tối ưu hóa hàm mất mát, TensorFlow cung cấp các trình tối ưu hóa thay đổi các biến từ từ để giảm thiểu giá trị tổn thất. Gradient descent là đơn giản nhất của loại này. Nó sửa đổi các biến theo độ lớn của hàm mất mát đối với biến. Dưới đây là thuật toán cơ bản về cách hoạt động của điều này:
Gradient descent sẽ lặp lại quy trình cho đến khi lỗi được giảm bớt. Mỗi quá trình được gọi là một lần lặp lại. Nếu tỷ lệ học tập quá nhỏ, thì các thuật toán sẽ mất nhiều thời gian để hội tụ vì nó đòi hỏi rất nhiều
của các lần lặp. Nếu tỷ lệ học tập quá cao thì các thuật toán có thể không bao giờ hội tụ.
Mô hình đang lặp lại quá trình của nó cho đến khi trọng số của nó đạt đến giá trị ổn định. Nếu một lỗi không phải là 0 và nó ổn định xung quanh một số khác nhau như 5, như được hiển thị trong hình này, điều đó có nghĩa là mô hình đang mắc lỗi điển hình là 5. Để giảm nó, chúng ta cần thêm một số thông tin khác vào mô hình, chẳng hạn như nhiều biến hơn hoặc các nhà ước lượng.
Vì vậy, đây là cách chúng ta có thể xây dựng mô hình hồi quy tuyến tính và đào tạo nó cho đầu ra mong muốn.
Phần kết luận
TensorFlow là một framework mạnh mẽ giúp làm việc với các biểu thức toán học và mảng đa chiều dễ dàng hơn, đây là khía cạnh quan trọng nhất của học máy. Nó cũng làm giảm sự phức tạp của việc mở rộng quy mô và thực thi các đồ thị dữ liệu.
Theo thời gian, TensorFlow đã trở nên phổ biến và hiện được các nhà phát triển sử dụng chủ yếu để giải quyết các vấn đề bằng cách sử dụng các phương pháp học sâu để phát hiện video, nhận dạng hình ảnh, xử lý văn bản như phân tích tình cảm, v.v. TensorFlow có tài liệu và hỗ trợ cộng đồng tuyệt vời. Nếu chúng ta làm theo điều đó, nó sẽ trở thành một quá trình ít tẻ nhạt hơn để giải quyết các vấn đề với TensorFlow. TensorFlow được sử dụng bởi tất cả các gã khổng lồ Công nghệ lớn như Dropbox, Snapchat, Twitter, Airbnb, eBay, SAP, IBM, Uber, Qualcomm để nhận dạng hình ảnh. Hơn nữa, Facebook, Google, Instagram và Amazon cũng sử dụng TensorFlow cho các mục đích khác nhau. Hầu hết tất cả các công ty công nghệ đang sử dụng nó theo cách này hay cách khác. Đây có thể là lý do lớn nhất để tìm hiểu và biết thêm về TensorFlow.
Bây giờ bạn đã biết về tầm quan trọng của Học sâu và TensorFlow, hãy xem khóa học MindMajix để tìm hiểu TensorFlow một cách chi tiết và chuẩn bị cho cuộc phỏng vấn tại công ty mơ ước của bạn.