TensorFlow – thư viện code Deep Learning

tensorboard

Bài viết này không nhằm vào hướng dẫn lập trình TensorFlow. Lý do, các bạn có thể tìm thấy nhiều source code hướng dẫn khác nhau trên internet, tự cài đặt và lập trình dễ dàng. Nếu các bạn đã có kiến thức cơ bản về Neural Network thì việc nắm bắt công nghệ này cũng sẽ đơn giản hơn rất nhiều.

Thông thường, ta sẽ đi theo flow nghiên cứu sau: vào trang https://www.tensorflow.org/ để xem qua bài giới thiệu chung chung, sau đó tiến hành cài đặt, cài đặt thất bại do conflict thư viện, cài đặt thành công, đọc source code, cài đặt thuật toán từ các tutorial, hiểu sơ sơ, bắt đầu hoang mang do có quá nhiều bài viết cần đọc và cài đặt -> mất hết cảm hứng.

Do đó, mình sẽ hướng các bạn đi theo một tiếp cận khác. Đầu tiên, ta sẽ lấy cảm hứng nghiên cứu thông qua các ứng dụng ngoài thực tế, người thật việc thật của TensorFlow. Tiếp đến, ta sẽ xem mọi người đánh giá như thế nào về mã nguồn này, có đáng để ta tiếp tục nghiên cứu không. Sau cùng, ta sẽ bắt tay vào tiến hành cài đặt và ứng dụng công nghệ cùng với các tài liệu tham khảo chất lượng đã thu thập được.

TensorFlow ứng dụng vào cuộc sống

Chàng kỹ sư Makoto Koike và ứng dụng phân loại dưa leo

Giới hạn duy nhất của Machine Learning và Deep Learning là trí tưởng tượng của chúng ta.

Hằng ngày, cứ mỗi mùa thu hoạch dưa leo, ba mẹ chàng kỹ sư Makoto lại ra vườn hái những trái dưa leo và phân chi những trái dưa leo này đúng theo chín tiêu chuẩn đã đề ra dựa vào kích thước, màu sắc, độ trày xướt, hình vân, có gai hay không, … Công việc này chiếm gần như hết thời gian cả ngày làm việc. Thay vì ba mẹ anh có thể tập trung vào việc trồng trọt và cải tiến quy trình trồng trọt thì họ phải tốn nhiều thời gian vào công việc nhàm chán này. Để học được toàn bộ hệ thống phân loại này tốn vài tháng ròng và bạn không thể thuê những nông dân làm việc bán thời gian trong mùa thu hoạch này. Đây chính là động lực để Makoto thiết kế ra hệ thống phân loại dưa leo.

Với TensorFlow, bạn không cần phải có kiến thức chuyên sâu về các mô hình toán học và các thuật toán tối ưu để cài đặt được Deep Neural Networks. Bạn chỉ cần download một vài đoạn code mẫu, đọc qua một vài tutorials online là bạn có thể cài đặt hoàn tất mà không hề tốn quá nhiều thời gian.

Hệ thống sử dụng board mạch Raspberry Pi 3 để điều khiển quy trình phân loại. Anh đã dành ra ba tháng để chụp toàn bộ 7,000 bức ảnh dưa leo đã được mẹ anh phân loại. Tuy nhiên, hệ thống đã gặp phải thách thức về tập dữ liệu (overfitting: phân loại sai dưa leo không có trong tập huấn luyện) và chi phí tính toán lớn (đã scale ảnh còn 80×80 nhưng tốn hai đến ba ngày để hoàn tất quá trình huấn luyện). Giải pháp hiện tại để giảm chi phí tính toán đó là thuê server của Google Cloud Machine Learning. Anh chỉ phải trả cho những gì anh sử dụng và không cần phải đầu tư nhiều máy móc thiết bị tốn kém.

Đọc tiếp >>

Ai sử dụng những sản phẩm của tôi và họ sử dụng chúng như thế nào?

Để xác định được đâu là khách hàng tiềm năng và cách họ sử dụng sản phẩm của chúng ta như thế nào là thách thức được đặt ra đối với các doanh nghiệp hiện nay.

Thông thường, ta sẽ sử dụng surveys để lấy ý kiến khách hàng. Tuy nhiên, phương pháp này tốn nhiều thời gian và tiền bạc. Thêm vào đó, các phiếu khảo sát thường có tính chủ quan. Một cách khác đó là phân tích các bài post trên các trang mạng xã hội để xác định xem tên thương hiệu của mình được đánh giá như thế nào. Thật không may trong các trường hợp sản phẩm được post ảnh nhưng chú thích bên dưới lại không hề đề cập đến, dẫn đến nhiều thiếu sót trong việc đánh giá.

Bài viết này sử dụng code của Google Inception v3, nói về retrain model và sử dụng AWS để triển khai.

Đọc tiếp >>

Human Activity Recognition

Nếu bạn đã sử dụng qua các sản phẩm của Mitsfit hay App watch thì ắt hẳn bạn đã quen thuộc với hệ thống tracking cả họ. Nhiệm vụ của các hệ thống này là thu thập hoạt động của người dùng đem về tổng hợp và phân tích để đưa ra các hỗ trợ cùng với thông tin hữu ích liên quan đến sức khỏe.

Bài viết này hướng dẫn các bạn cài đặt mạng CNN cho việc nhận diện các hoạt động của con người viết tắt là HAR (Human Activity Recognition). Tập dữ liệu được thu thập từ accelerometer của smart phone và gán nhãn tương ứng với sáu hoạt động thường nhật gồm đi, đứng, ngồi, chạy, lên cầu thang, xuống cầu thang của 36 users với tỉ lệ lấy mẫu là 20Hz (20 giá trị mỗi giây).

Đọc tiếp >>.

Các ứng dụng khác

Number plate recognition with Tensorflow: Sử dụng sliding window, nếu có chứa biển số xe thì lưu lại vị trí, sau đó hiển thị kết quả trên ảnh (lấy intersection của các detection).

Image Completion with Deep Learning in TensorFlow: Ứng dụng choinpainting, phục hồi ảnh hư cũ, loại bỏ các đối tượng không liên quan trong ảnh (Content-aware fill).

Những tính năng mới cập nhật

Scikit Flow: Easy Deep Learning with TensorFlow and Scikit-learn: Dễ dàng thử nghiệm các classification khác nhau chỉ thông qua một số params.

High-level Learn Module in TensorFlow: Các thông tin của TF version mới.

The Good, Bad & Ugly of TensorFlow: Đánh giá TF.

Tài liệu học online

Awesome TensorFlow: đây là nguồn tài liệu tổng hợp rất hay, mình thường dùng để làm nơi tham khảo source và tài liệu.

  • Có các lớp học online bổ ích.
  • Tổng hợp các nguồn để học TF

Machine Learning Recipes with Josh Gordon: Google video training

Deep learning datasets

Deep Learning for NLP resources

Deep Learning for Natural Language Processing

Lập trình cơ bản

Sau khi đã có động lực nghiên cứu thì bước cuối cùng là bắt tay vào code. Dưới đây là một số note nhỏ cho từng bài viết tham khảo.

NakedTensor: bạn có thể bắt đầu từ đoạn script nhỏ này, hoàn toàn đơn giản, ngắn gọn và dễ hiểu.

TensorFlow in a Nutshell — Part One: Basics

  • TensorFlow có thể +,-,*,/, so sánh, tạo constant, array, matrix như bên numpy.
  • n-dimensional matrix gọi là một tensor, 2-dimensional tensor tương đương với ma trận m x m.
  • Các thuật toán được đề cập ở phần sau: RNN, CNN, FNN, Linear, SVM, Random Forest, Reinforment, CRF

The Gentlest Introduction to Tensorflow – Part 1: Dự đoán giá nhà bằng TF có hình ảnh minh hoạ rõ ràng.

The Gentlest Introduction to Tensorflow – Part 2: Nói về quá trình huấn luyện diễn ra như thế nào bao gồm stocashtic, mini-batch, batch.

Hello, TensorFlow

Hiểu đầy đủ về cách sử dụng TF bên cạnh ví dụ đơn giản thường thấy ở các tutorial khác.

  • Các node của TensorFlow graph được gọi là “operations” hoặc “ops”.
  • Session mặc định sẽ chọn default graph để thực thi lệnh.
  • TensorFlow thực thi các hàm bên ngoài Python nhờ vậy có thể tăng tốc độ tính toán như lập trình song song trên CPU.
  • Để liệt kê danh sách các toán tử: for op in graph.get_operations(): print(op.name)
  • Có thể dùng TensorBoard để quan sát mô hình TF. tensorboard –logdir=log_simple_graph. localhost:6006/#graphs

An Introduction to Implementing Neural Networks using TensorFlow

  • Ứng dụng của ANN, sử dụng TensorFlow.
  • Các bước giải bài toán ANN, giới thiệu các library xử lý ảnh.
  • TensorFlow là numpy, tensors = multi-dimensional arrays.
  • Có thể build các algorithm khác: decision trees hay k-Nearest Neighbors
  • So sánh với các library khác.

Flow cơ bản

  • Build computational graph
  • Khởi tạo các variables
  • Tạo session
  • Thực thi graph bằng session
  • Đóng session

Các thuật ngữ

  • placeholder: A way to feed data into the graphs
  • feed_dict: A dictionary to pass numeric values to computational graph

Lập trình nâng cao

TensorFlow Tutorial – used by Nvidia: Sử dụng GPU để tăng tốc độ huấn luyện. Có các ví dụ cài đặt thuật toán Deep Learning. Các bài viết cần đọc về TensorFlow để cài đặt

  • Feed forward neural network (FFN) trên tập dữ liệu MNIST – TensorFlow playground, Visualizing Optimization Algos
  • Convolutional Neural Network (CNN) và Spatial Transformer trên ảnh: có visualization, học về convolution (width, height, depth) trực quan dễ hiểu, GPU hoạt động thế nào.
  • Recurrent Neural Network (RNN).
  • Hệ thống phân loại lá cây sử dụng FFN, CNN và RNN.
  • Autoencoder (AE) reconstructing the MNIST, có sách hay tự học.

Dive into TensorFlow with Linux: Tập trung vào GPU trên Linux, sử dụng lại code của Google

  • Thu thập dữ liệu ảnh.
  • Huấn luyện graph/model bằng TensorFlow và Inception model.
  • Viết script để phân loại ảnh mới bằng mô hình graph đã huấn luyện.
  • Testing script.

Deep Learning with Apache Spark and TensorFlow: Thử nghiệm Spark + TF.

How to Quantize Neural Networks with TensorFlow: Dùng để optimize memory space.

Kết

Dưới đây là một số chia sẻ của mình sau một thời gian tìm hiểu TensorFlow.

  • Nên cài đặt isolate bằng virtualenv hoặc docker để tránh conflict các thư viện.
  • Nên sử dụng Linux để lập trình vì có GPU để tăng tốc tính toán.
  • Cài đặt các đoạn script cơ bản trước để kiểm tra việc cài đặt đã ổn chưa. Tiếp đó, cài đặt các thuật toán thông dụng như FFN, CNN, RNN. Khi đó, ta sẽ tự tin hơn về các lý thuyết đã học.
  • Trải nghiệm các cài đặt nâng cao giúp bạn nâng cao kỹ năng Data Engineer. Nếu không có máy tính cấu hình cao thì ta có thể sử dụng các dịch vụ cloud computing của Google hoặc Amazon với giá cả phải chăng, chi phí tính được tính dựa vào những gì bạn sử dụng.
  • Khi áp dụng vào bài toán của mình, các bạn chỉ cần dựa vào các template code đã “dợt” trước đó. Cộng thêm các nguồn tài liệu hướng dẫn bổ ích mà mình đã chọn lọc bên trên chắc chắn mọi việc rồi sẽ thành công.

Hy vọng qua bài viết này, các bạn có thêm một nguồn tham khảo bổ ích về thư viện TensorFlow. Bạn nào có nguồn tài liệu hay có thể đóng góp thêm bằng cách comment bên dưới bài viết này.

15 Deep Learning Tutorials

Advertisement

Một suy nghĩ 14 thoughts on “TensorFlow – thư viện code Deep Learning

    1. Mục đích của họ là tìm cực trị của hàm H_y'(y). Trong đó, y’ là nhãn thật, y là nhãn suy ra từ tập huấn luyện y = softmax(Wx + b). Hàm softmax mục đích chuẩn hóa giá trị của y. Em xem (Wx + b) đơn giản như (ax + b). Ta đi tìm tham số a và b sao cho hàm y gần giống với y’ (thật tế là không đạt được, chỉ có thể xấp xỉ) là giải xong bài toán.
      Để tìm tham số họ dùng thuật toán GradientDescentOptimizer để huấn luyện.

      Thích

      1. Anh học về Machine Learning và Deep Learning như thế nào ạ.Em đang định hướng theo mảng này mà thông tin nó mù mờ quá.

        E định học Python rồi học Machine Learning ở : https://www.coursera.org/learn/machine-learning
        Sau đó học tiếp Deep Learning ở : http://www.deeplearningbook.org/
        Rồi sau đó sẽ học tensorflow.
        Tuy nhiên với dân kỹ thuật thì việc đọc sách quá lâu sẽ không nhớ.E thấy đọc lâu quá sợ đến lúc làm lại quên mất đoạn trước.A có gợi ý gì cho con đường dài hơi này không ạ ?

        Thích

        1. Coursera là nơi anh bắt đầu học về Machine Learning 😀 Course này dạy khá kỹ, em có thể bắt đầu ở đây. Nếu có kiến thức toán không hiểu em có thể vào https://ocw.mit.edu/index.htm tìm course về Linear Algebra và Analysis I
          Xong course này em cũng đã biết về Deep Learning. Tensorflow chỉ là công cụ, em có thể học trong 1 ngày. Do đó, nền tảng vẫn là quan trọng nhất.
          Thời sinh viên thì anh hay nghiền ngẫm đọc sách để tập hiểu các thuật ngữ tiếng Anh. Thời gian đầu khá chậm chạp nhưng dần dần 1,2 tháng thì quen hẳn. Hiện tại, khi đi làm, anh đọc sách chỉ để reference nhanh do không có nhiều thời gian như thời sinh viên 🙂
          Lời khuyên là hãy hoàn tất một course nào đó về Machine Learning chẳng hạn như coursera, đừng bỏ cuộc giữa chừng, cố gắng hoàn thành tất cả bài tập programming. Việc làm này giúp em củng cố lại kiến thức cũng như code snippet của riêng mình. Sau này, khi đọc code người khác dù là Tensorflow hay Keras gì gì đó thì em đọc sẽ dễ hiểu và dễ áp dụng hơn.

          Thích

              1. Cho em hỏi 1 câu hỏi cuối là Python thì nằm ở đâu trong những phần này,có nên xen vào giữa hay học Machine Learning rồi học luôn Deep Learning,Python học cuối.Có nên xen phần học python vào giữa hay thôi chỉ cần học đơn thuần trên Coursera.Vì bản chất e thấy trên Coursera họ sử dụng Matlab còn thực tế thì Python là ngôn ngữ phổ biến cho lĩnh vực này

                Thích

                1. Bản chất ngôn ngữ lập trình là thể hiện điều em muốn máy tính làm. Python chỉ là một trong số công cụ giúp em prototype thuật toán của mình đơn giản và nhanh chóng. Cấu trúc dữ liệu và giải thuật vẫn là quan trọng nhất. Sau này em có thể làm bất chấp đó là ngôn ngữ gì dù đó là Java, Scala, Julia, R,…
                  Nếu muốn apply luôn Deep Learning thì anh nghĩ em chỉ cần theo hết Neural Network là ok. Em có thể code Matlab/Octave up bài để kiểm chứng trên Coursera, sau đó port qua Python script cũng là một cách học nhanh.
                  Lời khuyên là em nên học bao quát tất cả các phương pháp của Machine Learning vì đa số phương pháp Deep Learning không phải là câu trả lời cho bài toán của em.

                  Thích

  1. Chào anh !

    Hôm nay e lại vào làm phiền anh.
    E đã theo học khoá trên coursera được 3 tuần và học được đến gần hết week 5.Hiện tại e thấy vấn đề là e chỉ hiểu về nguyên tắc chứ không hề hiểu về thuật toán do kiến thức toán học còn hạn chế.
    Theo anh thì có nên học tiếp không hay dừng lại bổ sung kiến thức toán đã.Và nếu dừng lại bổ sung thì nên đọc những kiến thức này ở đâu? (Theo e tìm hiểu thì nó Đại Số Tuyến Tính, Xác Suất Thống Kê, Toán Tối Ưu )

    Thích

      1. Khoá của Andrew Ng trên coursera không có phần phụ lục rõ ràng.Các kiến thức về tối ưu và làm thế nào để tối ưu các tham số không được đề cập cụ thể.Thành ra khi xem hoặc đọc ví dụ e có thể hiểu cách làm của họ nhưng với bài toán khác đi e lại không hình dung được cách làm ( Có thể do thiếu hụt về kiến thức hoặc sai phương pháp )

        A có lời khuyên hoặc giải pháp nào cho case này ko ạ

        Thích

        1. Khi bắt đầu học ML, em nên nắm bắt ý tưởng (input/output) hơn là đi sâu vào giải thuật tối ưu vì khá mất thời gian nghiên cứu.
          Nếu em có nhu cầu tìm hiểu sâu thì có thể tìm với các từ khoá trong course, bắt đầu bằng tên của phương pháp tối ưu đó. Với mỗi tài liệu tìm được em sẽ bắt gặp nhiều từ khoá khác. Từ đây, em sẽ cố gắng hiểu được ý tưởng của những từ khoá này. Sau cùng, khi hiểu được các từ khoá con thì từ khoá ban đầu của em sẽ được sáng tỏ.

          Thích

Trả lời

Điền thông tin vào ô dưới đây hoặc nhấn vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s