Tin tổng hợp

Deep Learning – Bài 1 : Cài đặt Tensorflow và Keras

  • 11/11/2021
  • Tìm hiểu về TensorFlow và Keras :

    Giới thiệu về Keras

    Kể từ 2012 khi deep learning có bước đột phá lớn, hàng loạt các thư viện hỗ trợ deep learning ra đời. Cùng với đó, ngày càng nhiều kiến trúc deep learning ra đời, khiến cho số lượng ứng dụng và các bài báo liên quan tới deep learning tăng lên chóng mặt.

    Các bộ thư viện phát triển cũng từ đó mà phát triển theo. Mỗi trong số chúng gắn liền với tên tuổi của một hãng công nghệ lớn

    alt text

    Vậy bộ thư viện nào là tối ưu nhất cho người dùng (lập trình viên)?
    Nhìn chung các bộ thư viện deep learning “TỐT” phải đáp ứng được những yếu tố sau:

    1. Hỗ trợ tính toán với GPU và các hệ thống phân tán. Điều này là tối quan trọng vì việc huấn luyện các mô hình deep learning yêu cầu khả năng tính toán rất mạnh.
    2. Hỗ trợ các ngôn ngữ lập trình phổ biến: C/C++, Python, Java, R, …
    3. Có thể chạy được trên nhiều hệ điều hành.
    4. Thời gian từ ý tưởng tới xây dựng và huấn luyện mô hình ngắn.
    5. Có thể chạy trên trình duyệt và các thiết bị di động.
    6. Có khả năng giúp người lập trình can thiệp sâu vào mô hình và tạo ra các mô hình phức tạp.
    7. Chứa nhiều model zoo, tức các mô hình deep learning thông dụng đã được huấn luyện.
    8. Hỗ trợ tính toán backpropagation tự động.
    9. Có cộng đồng hỏi đáp lớn.nguồn :https://kipalog.com/posts/Keras

    Về những kiểu viết model bằng Keras

    Trong phiên bản TensorFlow 2.0, có 3 cách để tạo ra 1 neural network model:

    • Sequential API
    • Functional API
    • Model subclassing

    3 kiểu viết model của Keras trong TensorFlow 2.0

    3 kiểu này có những đặc điểm riêng, do đó cũng có những điểm mạnh điểm yếu riêng biệt:

    • Sequential API: cách viết đơn giản, tuy nhiên sẽ không dựng được các shared layer (residual block chẳng hạn), không handle được multiple inputs/outputs, do đó không dựng được 1 số model như Resnet, MVCNN,…
    • Functional API: cách viết có phần tương tự tensorflow graph version 1.x, tuy vậy vẫn có khả năng tạo được các model phức tạp, các layers có khả năng sharing 1 cách đơn giản. Thêm vào đó, tất cả các Sequential model đều có thể tạo được bằng Functional model.
    • Model subclassing: cách viết có phần tương tự pytorch subclassing. Có khả năng viết được các model phức tạp cũng như các khả năng khác của Functional model.

    Với cá nhân mình, mình sử dụng cách viết Functional API trong công việc. Đây là cách viết đủ đơn giản, nhưng rất mạnh mẽ, tới giờ các model phức tạp như CRAFT mình đều có thể viết bằng dạng Functional. Chưa kể tới, các pre-model trong Keras cũng được viết theo dạng này, ví dụ như Inception-Resnet-v2.

    Vậy, ta nên viết model dạng Functional như thế nào?

    Flow khi sử dụng Keras

    Khi sử dụng Keras để giải quyết các bài toán machine learning, mình sẽ thực hiện theo flow như sau:

    • viết lớp input. Chú ý trong việc tạo shape của input cho chính xác.
    • viết các layers giữa của network. Tùy thuộc vào network mà việc này sẽ phức tạp hoặc là không, tuy nhiên phần đa đều khá đơn giản.
    • tiến hành feed input layer và output layer vào tf.keras.models.Model. Xong bước này thì chỉ cần gọi ra là ta đã có model rồi.

    Nghe khá đơn giản phải không? Thực ra nhờ Keras mà nó thực sự đúng là đơn giản như vậy đó. Hồi xưa viết thuần Tensorflow thì cực hơn khá là nhiều.

    Cách viết Keras model dạng Functional

    Để minh họa cho việc tạo model dạng Functional, mình sẽ viết lại Resnet 50. Nếu nói cặn kẽ hơn về Keras thì sẽ khá mất thời gian, cũng như khiến bài viết dài hơn rất nhiều, do đó mình sẽ viết cho các bạn đã từng biết chút chút về Keras sử dụng.

    Cài đặt TensorFlow theo câu lệnh sau trong terminal Pycharm

    pip install tensorflow

    Tiếp theo cài Keras :

    pip install keras