PyTorch vs TensorFlow on Machine Learning frameworks

Mình biết đến TensorFlow khi tìm hiểu về Deep Learning. TensorFlow được phát triển bởi Google(trước đây là DeepMind được Google mua lại năm 2014).
TensorFlow trở nên nổi tiếng cùng với những ứng dụng Trí tuệ nhân tạo mới nổi cùng Deep Learning. Nhưng tới năm nay thì PyTorch đang được công đồng những nhà khoa học về Machine Learning quan tâm. Bằng chứng là các bài báo được nghiên cứu nhắc đến và sử dụng PyTorch khá nhiều. Nó có vẻ dễ sử dụng, chạy nhanh hơn so với TensorFlow nhưng ứng dụng cho các sản phẩm thực tế còn hạn chế.

Cần tìm hiểu thêm về PyTorch xem như thế nào.
Kiến thức này mình xem ở: https://thegradient.pub/state-of-ml-frameworks-2019-pytorch-dominates-research-tensorflow-dominates-industry/

Deep Learning cơ bản

Trước mình hay theo dõi blog và nhóm Deep Learning cơ bản của tác giả Nguyễn Thanh Tuấn. Đồng chí này mới ra cuốn sách (đa phần là tổng hợp các bài viết trên blog) về Deep Learning cơ bản.

Link sách: Google

Link blog: https://nttuan8.com/

Top 26 Free Python Tools for Developer

Python là một ngôn ngữ lập trình xuất hiện từ lâu với nhiều ứng dụng và được rất nhiều lập trình viên ưa thích. Nhưng gần đây nó trở nên nổi tiếng và phổ biến bởi sử phát triển mạnh mẽ của Machine Learning và Trí tuệ nhân tạo. Sau đây là top 26 Free Python Tools hàng đầu được sử dụng phổ biến trong lĩnh vực Data Science, Machine Learning, Trí tuệ nhân tạo, Thống kê số liệu, Tính toán hiệu năng cao…

1. Pandas: Used for data analysis

Từ lâu Python là ngôn ngữ tuyệt vời cho việc trộn và chuẩn bị dữ liệu nhưng không mạnh về việc phân tích và mô hình hóa dữ liệu. Pandas giúp lấp đầy khoảng trống này cho phép ta có thể thực hiện toàn bộ quy trình phân tích dữ liệu trong Python mà không phải sử dụng đến ngôn ngữ chuyên về phân tích dữ liệu như R.

2. SciPy: Algorithms to use with numpy

Thư viện SciPy chứa một tập hợp các thuật toán và các công cụ để xử lý dữ liệu như số như xử lý tín hiệu, tối ưu hóa, thống kê và nhiều tính năng khác.

3. HDF5: Used to store and manipulate data

Thư viện HDF5 kết hợp với Numpy có thể lưu trữ và xử lý một lượng lớn dữ liệu số. Giúp ta có thể xử lý hàng Terabyte dữ liệu cũng nhưng hàng ngàn bộ dữ liệu (dataset) trong một tập dữ liệu.

4. Jupyter: Research collaboration tool

Jupyter là môi trường phát triển tương tác trực quan trên web giúp ta có thể code, xử lý dữ liệu, xem dữ liệu như bảng, biểu đồ và đặc biệt có thể chia sẻ cho tất cả mọi người. Jupyter khá linh hoạt, có thể cấu hình và sắp xếp giao diện để hỗ trợ tốt hơn các công việc hoặc nghiên cứu trong ngành data science, scientific computing và machine learning.

5. HDFS: C/C++ wrapper for Hadoop

Đây là một thư viện giúp Python có thể tương tác với hệ thống tệp của Hadoop để xử lý BigData

6. SQLAlchemy: Python SQL Toolkit

SQLAlchemy là một thư viện cơ bản giúp Python có thể giao tiếp với cơ sở dữ liệu. Thư viện này chủ yếu được sử dụng như một công cụ lập bản đồ quan hệ để dịch các lớp của Python thành các bảng trên cơ sở dữ liệu quan hệ và tự động chuyển đổi các lệnh gọi hàm thành các câu lệnh SQL.

Ngôn ngữ lập trình Python
Ngôn ngữ lập trình Python

7. pyMySQL: MySQL connector

pyMySQL là thư viện giúp Python kết nối tới hệ quản trị cơ sở dữ liệu MySQL.

8. Theano: Deep learning with neural network

Theano làm tăng sức mạnh tính toán của Python, cho phép developer có thể định nghĩa, tối ưu hóa và đánh giá các biểu thức toán hoạc liên quan đến mảng đa chiều một cách hiệu quả. Nó có thể chạy hiệu quả cả trên GPU và CPU, hỗ trợ đắc lực cho các tính toán neural network phục vụ các thuật toán Deep Learning.

9. Lasagne: Build and train neural network in Theano

Lasagne là một thư viện khá gọn nhẹ để xây dựng và huấn luyện neural network dựa trên Theano.

10. Seaborn: Data visualization tool

Seaborn là một thư viện mới dựa trên Matplotlib giúp ta có thể visualization dữ liệu một cách trực quan. Khi làm về data science thì việc hiển thị dữ liệu là một việc quan trọng và thường xuyên giúp ta có thể hiểu được dữ liệu. Seaborn đơn giản, dễ học và dễ sử dụng hơn Matplotlib vì nó trực quan và ít tham số hơn.

11. Airflow: Data enginnering tool

Airflow là một nền tảng giúp ta có thể lập trình, lên lịch và theo dõi các tiến trình công việc. Airflow có giao diện phong phú giúp ta có thể dễ dàng hình dung các quy trình, bước chạy trên hệ thống, có thể theo dõi trạng thái các tiến trình và khắc phục sự cố khi cần.

12. Elasticsearch: Data search engine

Elasticsearch là một công cụ tìm kiếm và phân tích dữ liệu, nó có khả năng tìm kiếm theo thời gian thực và phân tán. Nó cho phép bạn khám phá dữ liệu với tốc độ và ở quy mô chưa từng có trước đây. Nó có thể tìm kiếm toàn văn bản, tìm kiếm có cấu trúc, phân tích và kết hợp cả 3. Elasticsearch là ứng dụng mạnh mẽ nhất trong top free python tools bởi tính ứng dụng rất lớn trong việc tìm kiếm và phân tích dữ liệu.

13. PyBrain: Algorithms for ML

PyBrain là một module Machine Learning của Python. Mục tiêu của nó là sự linh hoạt, dễ sử dụng những vẫn chứa đầy đủ sức mạnh của các thuật toán Machine Learning.

14. NumPy: Multidimensional arrays

NumPy là một thư viện tính toán cơ bản rất hữu ích dành cho việc phân tích dữ liệu, thống kê và data science.

15. Matplotlib: Data visualization tool

Matplotlib là một thư viện hàng đầu giúp ta có thể dễ dàng mô hình hóa dữ liệu. Nói đơn giản hơn nó giúp ta có thể nghiên cứu dữ liệu thông qua các biểu đồ, hình vẽ… một cách trực quan.

16. PyTables: Used for managing HDF5 datasets

PyTables là một package của Python để quản lý các bộ dữ liệu phân cấp và được thiết kế để làm việc với lượng dữ liệu lớn và cực lớn.

17. IPython: Powerful shell

IPython là một ứng dụng giúp sử dụng code python shell một cách mạnh mẽ

18. PyMongo: MongoDB driver

PyMongo là thư viện giúp Python kết nối tới hệ quản trị cơ sở dữ liệu MongoDB.

19. Redis: Redis access libraries

Package này giúp Python làm việc dễ dàng với Redis.

20. Scikit-lear: Used for machine leaning algorithms

Đây là một trong những thư viện về Machine Learning nổi tiếng nhất giúp Python nằm trong top các ngôn ngữ lập trình phổ biến về Machine Learning. Scikit-lear chứa hầu hết các thuật toán Machine Learning từ đơn giản đến phức tạp, từ cổ điển đến hiện tại, xứng đáng nằm trong top free python tools cho lập trình viên.

21. Keras: High-level neural network API

Scikit-lear chuyên về Machine Learning còn Keras thì lại chuyên về Deep Learning giúp Python được sử dụng hiệu quả để phát triển các ứng dụng trí tuệ nhân tạo.

22. Bokeh: Data visualization tool

Bokeh kém nổi tiếng hơn Matplotlib nhưng cũng là một ứng dụng tốt để có thể visualization dữ liệu.

23. Dask: Data enginnering tool

Dask là giúp Python có thể xử lý các tác vụ liên quan đến tính toán song song.

24. Luigi: Data enginnering tool

Luigi giúp developer xây dựng các tác vụ, job phức tạp khi cần xử lý các công việc hàng loạt.

25. SymPy: Symbolic math

SymPy giúp Python tính toán các biểu thức toán học, các công thức toán học phức tạp.

26. Pattern: Natural language processing

Pattern là một module nổi tiếng giúp xử lý ngôn ngữ tự nhiên hiệu quả.

Trên đây là 26 free python tools phổ biến và hữu ích cho lập trình viên. Nếu bạn thấy có những tools, thư viện nào hữu ích và phổ biến hơn nữa thì chia sẻ cho mọi người thêm nhé.

Có thể bạn quan tâm:

Giải thuật cho hệ thống gợi ý

Hệ thống gợi ý ngày càng được ứng dụng rộng rãi trong nhiều lĩnh lực khác nhau ví dụ hệ thống gợi ý video của youtube, của Netflix, hệ thống gợi ý bài hát của Zing… hoặc hệ thống gợi ý mua hàng online.
Ứng dụng là nhiều vậy, nói đơn giản thì cũng đơn giản nhưng nói phức tạp thì cũng thực sự phức tạp.
Đây là 1 bài viết khá hay về giải thật cho hệ thống gợi ý.
Link: http://www.giaithuatlaptrinh.com/?p=1320

Sử dụng Keras trên Anaconda3 – Deep learning để phân loại ảnh

https://nttuan8.com/bai-7-gioi-thieu-keras-va-bai-toan-phan-loai-anh/
Có code test.

Cách cài đặt Keras trên Anaconda 3- Win 10:

Trong mục Environments chọn All nhập keras và nhấn tìm kiếm.

Tích vào keras, keras-base, keras-applications, keras-preprocessing. Sau đó nhấn Apply để cài đặt.

Phát hiện đối tượng real-time với YOLO

YOLO là một thư viện sử dụng trí tuệ nhân tạo để phát hiện đối tượng real-time trong ảnh và video. Ta có thể sử dụng YOLO với nhiều ngôn ngữ khác nhau như Python, Javascript, C++… YOLO xử lý ảnh có thể sử dụng GPU hoặc OPENCV
Trang chủ của YOLO: https://pjreddie.com/darknet/yolo/#demo

Phát hiện đối tượng với YOLO
Phát hiện đối tượng với YOLO

Cài đặt YOLO trên máy ảo

  • Thiết lập máy ảo CENTOS 7
  • Cài đặt git: sudo yum install git
  • cài đặt GCC: # yum group install “Development Tools”
  • Clone project darknet: git clone https://github.com/pjreddie/darknet
  • Cài đặt OPEN CV
    yum install cmake gcc gtk2-devel numpy pkconfig -y
    cd
    wget https://github.com/opencv/opencv/archive/3.4.2.zip
    unzip 3.4.2.zip
    https://www.vultr.com/docs/how-to-install-opencv-on-centos-7
  • Sửa file Makefile dòng OPENCE từ 0 thành 1
  • Biên dịch darknet:
    cd darknet
    make
  • Tải trọng số có sẵn đã được train: wget https://pjreddie.com/media/files/yolov3.weights
  • Test: ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

Một số địa chỉ tham khảo:

https://www.blog.pythonlibrary.org/2018/06/05/creating-pdfs-with-pyfpdf-and-python/

https://pjreddie.com/darknet/yolo/#demo

https://www.vultr.com/docs/how-to-install-opencv-on-centos-7