Hướng dẫn về TensorFlow - Học sâu bằng TensorFlow



Hướng dẫn TensorFlow là blog thứ ba trong loạt bài này. Nó bao gồm tất cả những điều cơ bản của TensorFlow. Nó cũng nói về cách tạo một mô hình tuyến tính đơn giản.

Tôi đã thiết kế hướng dẫn TensorFlow này cho các chuyên gia và những người đam mê quan tâm đến việc áp dụng Thuật toán học sâu bằng cách sử dụng TensorFlow để giải quyết các vấn đề khác nhau. TensorFlow là một thư viện học sâu mã nguồn mở dựa trên khái niệm về biểu đồ luồng dữ liệu để xây dựng mô hình. Nó cho phép bạn tạo mạng nơ-ron quy mô lớn với nhiều lớp.Học cách sử dụng thư viện này cũng là một phần cơ bản của .Sau đây là các chủ đề sẽ được thảo luận trong blog hướng dẫn TensorFlow này:

  • TensorFlow là gì
  • Kiến thức cơ bản về mã TensorFlow
  • TensorFlow UseCase

Tensors là gì?

Trong hướng dẫn TensorFlow này, trước khi nói về TensorFlow, trước tiên chúng ta hãy hiểu tensors là gì . Tensors không là gì ngoài thực tế để đại diện cho dữ liệu trong học sâu.





Tensors - TensorFlow Tutorial - EdurekaNhư thể hiện trong hình trên, tensors chỉ là các mảng đa chiều, cho phép bạn biểu diễn dữ liệu có kích thước cao hơn. Nói chung, Học sâu bạn xử lý các tập dữ liệu thứ nguyên cao trong đó thứ nguyên đề cập đến các tính năng khác nhau có trong tập dữ liệu. Trên thực tế, cái tên “TensorFlow” bắt nguồn từ các hoạt động mà mạng nơ-ron thực hiện trên tensor. Nó thực sự là một luồng căng thẳng. Vì bạn đã hiểu tensor là gì, hãy để chúng tôi tiếp tục trong hướng dẫn TensorFlow này và hiểu - TensorFlow là gì?

TensorFlow là gì?

TensorFlow là một thư viện dựa trên Python cung cấp các loại chức năng khác nhau để triển khai Mô hình học sâu. Như đã thảo luận trước đó, thuật ngữ TensorFlow được tạo thành từ hai thuật ngữ - Tensor & Flow:



Trong TensorFlow, thuật ngữ tensor đề cập đến việc biểu diễn dữ liệu dưới dạng mảng đa chiều trong khi thuật ngữ dòng chảy đề cập đến chuỗi hoạt động mà một người thực hiện trên tensor như thể hiện trong hình trên.

Bây giờ chúng ta đã có đủ thông tin cơ bản về TensorFlow.



Tiếp theo, trong hướng dẫn TensorFlow này, chúng ta sẽ thảo luận về những điều cơ bản về mã TensorFlow.

Hướng dẫn về TensorFlow: Khái niệm cơ bản về mã

Về cơ bản, quy trình tổng thể để viết một chương trình TensorFlow bao gồm hai bước:

  1. Xây dựng đồ thị tính toán
  2. Chạy Đồ thị Tính toán

Hãy để tôi giải thích cho bạn hai bước trên từng bước một:

1. Xây dựng Đồ thị Tính toán

Vì thế, đồ thị tính toán là gì? Tốt, một đồ thị tính toán là một chuỗi các hoạt động TensorFlow được sắp xếp như các nút trong biểu đồ. Mỗi nút lấy 0 hoặc nhiều tensor làm đầu vào và tạo ra tensor làm đầu ra. Hãy để tôi cung cấp cho bạn một ví dụ về một đồ thị tính toán đơn giản bao gồm ba nút - đến , b & c như hình bên dưới:

thử nghiệm trình duyệt chéo trong selen

Giải thích về Đồ thị Tính toán Trên:

  • Các nút không đổiđược sử dụng để lưu trữ các giá trị không đổi vì nó không nhận đầu vào, nhưng tạo ra các giá trị được lưu trữ dưới dạng đầu ra. Trong ví dụ trên, a và b là các nút không đổi có giá trị tương ứng là 5 và 6.

  • Nút c biểu diễn phép toán nhân hằng số nút a với b. Do đó, việc thực hiện nút c sẽ dẫn đến phép nhân của nút const a & b.

Về cơ bản, người ta có thể coi đồ thị tính toán như một cách thay thế để khái niệm hóa các phép tính toán học diễn ra trong chương trình TensorFlow. Các hoạt động được gán cho các nút khác nhau của Đồ thị tính toán có thể được thực hiện song song, do đó, mang lại hiệu suất tốt hơn về mặt tính toán.

Ở đây chúng tôi chỉ mô tả phép tính, nó không tính toán bất cứ thứ gì, không chứa bất kỳ giá trị nào, nó chỉ xác định các hoạt động được chỉ định trong mã của bạn.

2. Chạy Đồ thị Tính toán

Chúng ta hãy lấy ví dụ trước về đồ thị tính toán và hiểu cách thực thi nó. Sau đây là mã từ ví dụ trước:

Ví dụ 1:

nhập tensorflow dưới dạng tf # Xây dựng biểu đồ a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Bây giờ, để có được đầu ra của nút c, chúng ta cần chạy đồ thị tính toán trong phiên họp . Session đặt các hoạt động biểu đồ vào Thiết bị, chẳng hạn như CPU ​​hoặc GPU và cung cấp các phương pháp để thực thi chúng.

Một phiên đóng gói kiểm soát và trạng thái của thời gian chạy TensorFlow, tức là nó lưu trữ thông tin về thứ tự mà tất cả các hoạt động sẽ được thực hiện và chuyển kết quả của hoạt động đã được tính toán cho hoạt động tiếp theo trong đường dẫn. Hãy để tôi chỉ cho bạn cách chạy biểu đồ tính toán trên trong một phiên (Giải thích về từng dòng mã đã được thêm vào dưới dạng nhận xét):

# Tạo đối tượng phiên sess = tf.Session () # Chạy biểu đồ trong một phiên và lưu trữ đầu ra vào một biến output_c = sess.run (c) # In đầu ra của nút c print (output_c) # Đóng phiên thành giải phóng một số tài nguyên sess.close ()
 Đầu ra: 30

Vì vậy, đây là tất cả về phiên và chạy một đồ thị tính toán bên trong nó. Bây giờ, chúng ta hãy nói về các biến và trình giữ chỗ mà chúng ta sẽ sử dụng rộng rãi trong khi xây dựng mô hình học sâu bằng TensorFlow.

Hằng số, Trình giữ chỗ và Biến

Trong TensorFlow, hằng số, trình giữ chỗ và biến được sử dụng để đại diện cho các tham số khác nhau của mô hình học sâu. Vì tôi đã thảo luận về hằng số trước đó, tôi sẽ bắt đầu với trình giữ chỗ.

Trình giữ chỗ:

Hằng số TensorFlow cho phép bạn lưu trữ một giá trị, nhưng nếu bạn muốn các nút của mình nhận đầu vào khi chạy thì sao? Đối với loại chức năng này, trình giữ chỗ được sử dụng cho phép biểu đồ của bạn nhận các đầu vào bên ngoài làm tham số. Về cơ bản, trình giữ chỗ là một lời hứa cung cấp giá trị sau này hoặc trong thời gian chạy. Hãy để tôi cho bạn một ví dụ để làm cho mọi thứ đơn giản hơn:

nhập tensorflow dưới dạng tf # Tạo trình giữ chỗ a = tf. trình giữ chỗ (tf.float32) b = tf. placeholder (tf.float32) # Gán phép toán nhân w.r.t. a & ampamp b tới nút mul = a * b # Tạo đối tượng phiên sess = tf.Session () # Thực thi mul bằng cách chuyển các giá trị [1, 3] [2, 4] cho a và b tương ứng output = sess.run ( mul, {a: [1,3], b: [2, 4]}) print ('Nhân ab:', output)
 Đầu ra: [2. 12.]

Những điểm cần nhớ về trình giữ chỗ:

  • Phần giữ chỗ không được khởi tạo và không chứa dữ liệu.
  • Người ta phải cung cấp đầu vào hoặc nguồn cấp dữ liệu cho trình giữ chỗ được xem xét trong thời gian chạy.
  • Việc thực thi trình giữ chỗ mà không có đầu vào sẽ tạo ra lỗi.

Bây giờ, chúng ta hãy tiếp tục và hiểu - biến là gì?

Biến

Trong học sâu, trình giữ chỗ được sử dụng để lấy các đầu vào tùy ý trong mô hình hoặc đồ thị của bạn. Ngoài việc lấy đầu vào, bạn cũng cần phải sửa đổi biểu đồ để nó có thể tạo ra các đầu ra mới w.r.t. đầu vào giống nhau. Đối với điều này, bạn sẽ sử dụng các biến. Nói tóm lại, một biến cho phép bạn thêm các tham số hoặc nút như vậy vào biểu đồ có thể đào tạo được, tức là giá trị có thể được sửa đổi trong một khoảng thời gian. Các biến được xác định bằng cách cung cấp giá trị và kiểu ban đầu của chúng như hình dưới đây:

var = tf.Variable ([0,4], dtype = tf.float32)

Ghi chú:

  • Trong trường hợp bạn chưa cung cấp kiểu dữ liệu một cách rõ ràng, TensorFlow sẽ suy ra kiểu của hằng / biến từ giá trị được khởi tạo.
  • TensorFlow có nhiều kiểu dữ liệu riêng như tf.float32 , tf.int32 Vân vân. Bạn có thể tham khảo tất cả chúng trên đây .

Các hằng số được khởi tạo khi bạn gọi tf.constant , và giá trị của chúng không bao giờ có thể thay đổi. Ngược lại, các biến không được khởi tạo khi bạn gọi tf.Variable . Để khởi tạo tất cả các biến trong chương trình TensorFlow, bạn phải gọi một cách rõ ràng một hoạt động đặc biệt như được hiển thị bên dưới:

phân tích cú pháp gấp đôi thành int java
init = tf.global_variables_initializer () sess.run (init)

Luôn nhớ rằng một biến phải được khởi tạo trước khi sử dụng đồ thị lần đầu tiên.

Ghi chú: Biến TensorFlow là bộ đệm trong bộ nhớ có chứa tensor, nhưng không giống như tensor bình thường chỉ được khởi tạo khi một đồ thị được chạy và ngay lập tức bị xóa sau đó, các biến tồn tại qua nhiều lần thực thi của một đồ thị.

Bây giờ chúng ta đã bao gồm đầy đủ các khái niệm cơ bản về TensorFlow, hãy tiếp tục và hiểu cách triển khai mô hình hồi quy tuyến tính bằng cách sử dụng TensorFlow.

Mô hình hồi quy tuyến tính sử dụng TensorFlow

Mô hình hồi quy tuyến tính được sử dụng để dự đoán giá trị chưa biết của một biến (Biến phụ thuộc) từ giá trị đã biết của một biến khác (Biến độc lập) bằng cách sử dụng phương trình hồi quy tuyến tính như hình dưới đây:

Do đó, để tạo mô hình tuyến tính, bạn cần:

  1. Biến phụ thuộc hoặc biến đầu ra (Y)
  2. Biến độ dốc (w)
  3. Y - Chặn hoặc sai lệch (b)
  4. Biến đầu vào hoặc độc lập (X)

Vì vậy, chúng ta hãy bắt đầu xây dựng mô hình tuyến tính bằng cách sử dụng TensorFlow:

Sao chép mã bằng cách nhấp vào nút dưới đây:

# Tạo biến cho độ dốc tham số (W) với giá trị ban đầu là 0,4 W = tf.Variable ([. 4], tf.float32) # Tạo biến cho độ lệch tham số (b) với giá trị ban đầu là -0,4 b = tf.Variable ( [-0.4], tf.float32) # Tạo trình giữ chỗ để cung cấp đầu vào hoặc biến độc lập, được ký hiệu là xx = tf.placeholder (tf.float32) # Phương trình hồi quy tuyến tính linear_model = W * x + b # Khởi tạo tất cả các biến sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Chạy mô hình hồi quy để tính toán wrt đầu ra thành giá trị x được cung cấp print (sess.run (linear_model {x: [1, 2, 3, 4]}))

Đầu ra:

[0. 0.40000001 0.80000007 1.20000005]

Đoạn mã đã nêu ở trên chỉ đại diện cho ý tưởng cơ bản đằng sau việc triển khai mô hình hồi quy, tức là cách bạn tuân theo phương trình của đường hồi quy để có được kết quả đầu ra w.r.t. một tập hợp các giá trị đầu vào. Tuy nhiên, còn hai điều nữa cần được bổ sung trong mô hình này để biến nó thành một mô hình hồi quy hoàn chỉnh:

  • Đầu tiên, chúng tôi cần cung cấp một cơ chế mà mô hình của chúng tôi có thể tự đào tạo tự động dựa trên tập hợp đầu vào và đầu ra tương ứng nhất định.
  • Điều thứ hai mà chúng ta cần là xác nhận mô hình được đào tạo của mình bằng cách so sánh đầu ra của nó với đầu ra mong muốn hoặc đầu ra mục tiêu dựa trên bộ giá trị x đã cho.

Bây giờ hãy để chúng tôi hiểu làm thế nào tôi có thể kết hợp các chức năng đã nêu ở trên vào mã của tôi cho mô hình hồi quy.

Chức năng Mất - Xác thực Mô hình

Hàm tổn thất đo lường khoảng cách giữa đầu ra hiện tại của mô hình với đầu ra mong muốn hoặc đầu ra mục tiêu. Tôi sẽ sử dụng một hàm mất mát được sử dụng phổ biến nhất cho mô hình hồi quy tuyến tính của mình được gọi là Tổng sai số bình phương hoặc SSE. SSE được tính toán w.r.t. đầu ra mô hình (đại diện bằng mô hình tuyến tính) và đầu ra mong muốn hoặc mục tiêu (y) như:

y = tf.placeholder (tf.float32) error = linear_model - y squared_errors = tf.square (error) loss = tf.reduce_sum (squared_errors) print (sess.run (loss, {x: [1,2,3,4 ], y: [2, 4, 6, 8]})
 Đầu ra: 90,24

Như bạn có thể thấy, chúng tôi đang nhận được giá trị tổn thất cao. Do đó, chúng ta cần điều chỉnh trọng số (W) và độ lệch (b) để giảm sai số mà chúng ta đang nhận.

tAPI f.train - Đào tạo mô hình

TensorFlow cung cấp người tối ưu hóa thay đổi từ từ từng biến để giảm thiểu hàm mất mát hoặc lỗi. Trình tối ưu hóa đơn giản nhất là xuống dốc . Nó sửa đổi mỗi biến theo độ lớn của đạo hàm của tổn thất đối với biến đó.

# Tạo phiên bản của trình tối ưu hóa dốc xuống dốc = tf.train.GradientDescentOptimizer (0,01) train = Optimizer.minimize (mất mát) cho tôi trong phạm vi (1000): sess.run (train, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) print (sess.run ([W, b]))
 Đầu ra: [array ([1.99999964], dtype = float32), array ([9.86305167e-07], dtype = float32)]

Vì vậy, đây là cách bạn tạo một mô hình tuyến tính bằng cách sử dụng TensorFlow và huấn luyện nó để có được đầu ra mong muốn.

Bây giờ bạn đã biết về Học sâu, hãy xem của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Khóa học Edureka Deep Learning with TensorFlow Certification Training giúp người học trở thành chuyên gia đào tạo và tối ưu hóa mạng nơ ron cơ bản và tích hợp bằng cách sử dụng các dự án và bài tập thời gian thực cùng với các khái niệm như chức năng SoftMax, Mạng lưới thần kinh mã hóa tự động, Máy Boltzmann hạn chế (RBM).

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần bình luận và chúng tôi sẽ liên hệ lại với bạn.

kiểu dữ liệu ngày t sql