Torch nn là gì

PyTorch là 1 thư viện Python-based hỗ trợ tạo ra các Deep Learning models và sử dụng chúng cho các ứng dụng khác nhau. Trên thực tế, PyTorch không chỉ là 1 thư viện Deep Learning, mà chính là 1 package về tính toán khoa học [scientific computing] như tài liệu chính thức của PyTorch đã đề cập:

It’s a Python-based scientific computing package targeted at two sets of audiences:
1. A replacement for NumPy to use the power of GPUs
2. A deep learning research platform that provides maximum flexibility and speed

PyTorch, tương tự như Python, nó được thiết kế tập trung vào tính dễ sử dụng và thậm chí người dùng có kiến ​​thức lập trình rất cơ bản cũng có thể sử dụng nó trong các dự án có liên quan đến Deep Learning.

Cấu trúc dữ liệu cốt lõi được sử dụng trong PyTorch là Tensor. Tương tự numpy array, Tensor là 1 mảng n-chiều với các phần tử có cùng kiểu dữ liệu.

Tại sao nên học PyTorch?

Hiện nay có rất nhiều thư viện về Deep Learning đã được phát hành, ngoài PyTorch, chúng ta có thể kể đến nhiều cái tên phổ biến như Caffe, TensorFlow, Theano [đã R.I.P],... Vậy điều gì khiến cho PyTorch trở nên khác biệt với những thư viện còn lại?

Để được xem 1 thư viện Deep Learning lý tưởng, nó phải có tính dễ học và dễ sử dụng, đủ linh hoạt để sử dụng trong các ứng dụng khác nhau, hiệu quả để chúng ta có thể xử lý các bộ dữ liệu thực tế lớn và đủ chính xác để cung cấp kết quả chính xác ngay cả khi không chắc chắn về dữ liệu đầu vào.

PyTorch được đánh giá là có thể đáp ứng rất tốt các metrics nêu trên. Phong cách code của PyTorch mang tính "rất Python", giúp những ai đã học qua Python đều sẽ dễ dàng tìm hiểu và sử dụng. Bên cạnh đó, PyTorch còn sỡ hữu khả năng tính toán với GPU, mang lại hiệu năng tính toán cao.

Ngoài ra, nếu bạn nghi ngờ về hiệu năng của PyTorch vì nó dựa trên Python, thì nên lưu ý rằng phần core của PyTorch [libtorch] được viết bằng C++ [high-performance C++ API]. Điều này còn làm cho quá trình chuyển đổi từ R&D sang Production dễ dàng hơn.

Tổng quan về PyTorch

Chúng ta đã điểm qua những điều làm cho PyTorch trở nên khác biệt. Và bây giờ, hãy cùng xem xét pipeline cơ bản của 1 dự án PyTorch. Hình dưới đây mô tả một quy trình công việc điển hình cùng với các modules quan trọng được liên kết với mỗi bước.

Workflow cơ bản của PyTorch

Các modules cơ bản mà chúng ta sẽ đề cập trong bài viết này là torch.nn, torch.optim, torch.utils torch.autograd.

Load và xử lí data

Đây luôn là một trong những bước đầu tiên trong bất kì một project về Deep Learning nào. Vì thế PyTorch đã hỗ trợ các tiện ích để thực hiện bước này với module torch.utils.data.

2 class quan trọng trong module này là DatasetDataLoader:

  1. Dataset được xây dựng trên nền kiểu dữ liệu Tensor và được sử dụng chủ yếu cho các bộ dữ liệu tùy chỉnh.
  2. DataLoader được sử dụng khi bạn có một tập dữ liệu lớn và bạn muốn tải dữ liệu từ Dataset ở chế độ nền để nó sẵn sàng và chờ sử dụng cho quá trình training loop.

Chúng ta cũng có thể sử dụng torch.nn.DataParalleltorch.distribution trong trường hợp có thể sử dụng song song nhiều máy tính hoặc nhiều GPUs.

Xây dựng Neural Network

Module torch.nn được sử dụng để tạo Neural Network. Nó cung cấp tất cả các Neural Network layers phổ biến như các fully connected layers, convolutional layers, các hàm activation và hàm loss, v.v.

Một khi kiến ​​trúc mạng đã được tạo ra và dữ liệu đã sẵn sàng để được feed cho mạng, chúng ta sẽ cần các kỹ thuật để cập nhật các trọng số [weights] và độ lệch [biases] để mạng tiến hành quá trình learning. Các tiện ích này được cung cấp trong module torch.optim. Còn để tính gradient tự động, chúng ta sử dụng module torch.autograd.

Model Inference & Compability

Sau khi model đã được train, nó có thể được sử dụng để dự đoán output cho các test cases hoặc thậm chí các datasets mới. Quá trình này được gọi là model inference.

PyTorch cũng cung cấp TorchScript có thể được sử dụng để chạy các model độc lập với Python runtime. Đây có thể được coi là một Máy ảo được thiết kế chủ yếu dành riêng cho việc thao tác với Tensors.

Chúng ta cũng có thể convert model được train bằng PyTorch sang các định dạng như ONNX, cho phép bạn sử dụng các model này trong các Deep Learning framework khác như MXNet, CNTK, Caffe2. Bạn cũng có thể chuyển đổi các model ONNX sang TensorFlow.

Làm việc với Tensor

Như đã đề cập ở đầu bài viết, Tensor là 1 mảng n-chiều với các phần tử có cùng kiểu dữ liệu tương tự numpy array. Để hiểu và sử dụng PyTorch Tensors rất dễ dàng.

Ví dụ, một giá trị vô hướng được biểu diễn bằng một Tensor 0 chiều. Tương tự để biểu diễn 1 vector ta sẽ sử dụng thang đo 1 chiều, v.v. Một số ví dụ về các Tensor với các kích thước khác nhau được hiển thị bên dưới sẽ giúp bạn dễ hình dung hơn.

Ví dụ về các Tensors có số chiều khác nhau trong PyTorch

Trước khi bắt đầu sử dụng PyTorch với Tensor, hãy cài đặt PyTorch 1.1.0 với hướng dẫn cụ thể theo các option khác nhau tại đây. Hoặc tiện hơn bạn có thể sử dụng Google Colab vốn đã được cài sẵn PyTorch. Trong giao diện Colab, bạn có thể mở notebook setting để chuyển runtime sang chế độ sử dụng GPU.

Khởi tạo Tensor

Dưới đây là một số cách khởi tạo Tensor cơ bản. Đầu tiên, ta cần import thư viện PyTorch

Qua những cách trên, chúng ta đã tạo ra các vector [Tensor 1 chiều]. Bây giờ ta sẽ thử tạo ra các Tensor nhiều chiều hơn.

Kiểm tra thông tin về chiều của Tensor với thuộc tính .shape

Truy xuất phần tử của Tensor

Truy xuất phần tử từ 1 vector [Tensor 1 chiều]

Truy xuất phần tử từ Tensor nhiều chiều

PyTorch Tensor cũng hỗ trợ slicing tương tự như numpy array

Chỉ định kiểu dữ liệu cho các phần tử của Tensor

Một khi chúng ta tạo một Tensor, PyTorch quyết định kiểu dữ liệu cho các phần tử của Tensor sao cho kiểu dữ liệu có thể được áp dụng cho tất cả các phần tử của Tensor. Chúng ta có thể override điều này bằng cách chỉ định kiểu dữ liệu khi tạo Tensor.

Convert PyTorch Tensor sang numpy array và ngược lại

Như chúng ta đã để cập thì Tensor trong PyTorch cũng tương tự như numpy array. Do đó ta hoàn toàn có thể convert cái này sang cái kia.

Các phép toán số học với Tensor

Tài liệu tham khảo

Lược dịch từ bài viết Introduction to PyTorch

Video liên quan

Chủ Đề