Giới thiệu TensorFlow 2.0

Chúng ta đã tìm hiểu cơ bản về TensorFlow trong loạt bài Học TensorFlow nhưng đó chỉ là TensorFlow 1.X. Vào tháng 1 năm 2019, Google đã thông báo về TensorFlow 2.0 và đến cuối năm, tháng 12 năm 2019, TensorFlow 2.0 chính thức ra mắt.

Kế thừa những ưu điểm từ người tiền nhiệm và tiếp thu ý kiến từ cộng đồng người dùng, chuyên gia hay các nhà nghiên cứu, các nhà phát triển Google (Google Brain Team) đã tiến hành nhiều cải tiến đáng kể để TensorFlow có thể được sử dụng dễ dàng và hiệu quả hơn. Các thay đổi được tiến hành trên 3 khía cạnh:

  • Tiện ích ( Usability-related modifications ): các API sử dụng đơn giản hơn, tài liệu cập nhật (tại https://www.tensorflow.org/) và nhiều nguồn dữ liệu xây dựng sẵn thuận lợi cho việc học và nghiên cứu TensorFlow.
  • Hiệu năng ( Performance-related modifications ): Căn cứ trên các kết quả huấn luyện và suy diễn trên các bộ xử lý CPU và GPU, trung bình, TensorFlow 2.0 có hiệu năng tốt hơn 2 lần so với TensorFlow 1.X.
  • Triển khai ( Deployment-related modifications): Cho phép các nhà phát triển có thể xây dựng và triển khai các ứng dụng ML một cách nhanh chóng và hiệu quả.

Cài đặt và tiếp cận TensorFlow 2.0

Trong Anaconda, nếu bạn đang dùng TensorFlow 1.X thì có thể cập nhật TensorFlow 2.0 bằng lệnh:


pip install --upgrade pip

Nếu bạn đã dùng TensorFlow 1.X thì một đoạn mã quen thuộc sẽ là:

import tensorflow as tf
x = tf.constant(10)
neg_op = tf.negative(x) # toán tử phủ định, nghĩa là x =10 => neg_op= -10
with tf.Session() as sess:
    result = sess.run(neg_op)
print(result) # -10

Hay tương đương

import tensorflow as tf
sess = InteractSession()
x = tf.constant(10)
neg_op = tf.negative(x)
result = sess.run(neg_op) # or neg_op.eval()
print(result) # -10
sess.close()

Với TensorFlow 1.X bắt buộc chúng ta phải thực thi Session để có thể thực thi các thao tác như tf.negative. Trong TensorFlow 2.0 chúng ta viết lại đoạn mã trên như sau:

import tensorflow as tf
x = tf.constant(10)
neg_op = tf.negative(x)
print(neg_op.numpy()) # -10

Trong TensorFlow 2.0 chúng ta không cần phải thực thi Session và các đối tượng trong TensorFlow có thể được sử dụng tương tự như các đối tượng Python, trong đoạn mã trên đối tượng neg_op dùng phương thức Python numpy() để hiển thị giá trị.

TensorFlow 2.0 cũng không yêu cầu chúng ta khởi tạo biến, ví dụ trong TensorFlow 1.X:

import tensorflow as tf
s= tf.InteractiveSession()
c1 = tf.Variable(0)
c1.initializer.run()
print(s.run(c1))

Trong TensorFlow 2.0 chúng ta chỉ việc viết:

import tensorflow as tf
c1 = tf.Variable(0)
print(c1.numpy())

TensorFlow 2.0 cũng không yêu cầu chúng ta định nghĩa trực tiếp các Graph dùng tf.Graph mà sẽ dùng tf.function và các biến cũng không được yêu cầu chia sẻ qua các phạm vi (scopes).

Rất nhiều cập nhật thú vị và ví dụ minh họa được trình bày chi tiết tại https://www.tensorflow.org/guide/migrate. Dựa vào tài liệu hướng dẫn này, chúng ta sẽ tìm hiểu nhiều cải tiến thú vị từ TensorFlow 2.0 trong các bài viết sau.