Chào mừng các bạn đến với bài viết thứ sáu trong loạt bài về Lập Trình Neural Network Với Pytorch. Trong bài viết này, chúng ta sẽ xem xét một ví dụ thực tế chứng minh việc sử dụng các khái niệm tensor rank, axes và shape. Để làm điều này, chúng ta sẽ xem một đầu vào tensor cho một mạng neural tích chập (Convolutional Neural Networks).
Convolutional Neural Network
Trong loạt bài về lập trình mạng neural này, chúng ta sẽ xây dựng một mạng neural tích chập (CNN), vì vậy hãy xem đầu vào tensor cho CNN.
Trong hai bài viết trước, chúng ta đã được giới thiệu về tensors, tìm hiểu về rank, axes và shape của tensor. Nếu bạn chưa đọc những bài viết đó, tôi thực sự khuyên bạn nên đọc chúng.
Bây giờ chúng ta sẽ đưa các khái niệm về rank, axes và shape để sử dụng vào một ví dụ thực tế. Để làm điều này, chúng ta sẽ coi đầu vào là hình ảnh như một tensor đối với CNN.
Mạng neural tích chập là mô hình tốt nhất cho mục đích phân loại hình ảnh.
Như đã trình bày trong bài trước, shape của tensor chứa tất cả thông tin liên quan về các axes, rank và indexes của tensor, vì vậy chúng ta chỉ cần xem xét shape là có thể tìm ra các giá trị khác
Shape Của Đầu Vào CNN
Shape của đầu vào CNN thường có độ dài là 4. Điều này có nghĩa là chúng ta có một tensor rank-4 với 4 axes. Mỗi index trong shape tensor đại diện cho một axis cụ thể và giá trị tại mỗi index cho chúng ta độ dài của axis tương ứng.
Mỗi axis của tensor thường đại diện cho một số loại đặc trưng logic của dữ liệu đầu vào. Nếu chúng ta hiểu từng đặc trưng này và vị trí axis của chúng trong tensor, thì chúng ta có thể hiểu khá tốt về cấu trúc dữ liệu tensor tổng thể.
Hãy nhớ rằng axis cuối cùng, là nơi chúng ta sẽ bắt đầu, là nơi chứa các con số hoặc giá trị dữ liệu thực tế. Nếu chúng ta đang chạy dọc theo axis cuối cùng và chúng ta dừng lại để kiểm tra một phần tử ở đó, thì phần tử đó sẽ là một con số. Nếu chúng ta đang chạy dọc theo bất kỳ axis nào khác, thì các phần tử là các mảng đa chiều.
Đối với hình ảnh, dữ liệu thô có dạng pixel được biểu thị bằng một số và được bố trí bằng hai kích thước là chiều cao và chiều rộng.
Chiều Cao Và Chiều Rộng Hình Ảnh
Để biểu diễn 2 chiều chúng ta cần 2 axes
Chiều cao và chiều rộng của hình ảnh được thể hiện trên hai axes. Các giá trị có thể có ở đây là 28 x 28, như trường hợp dữ liệu hình ảnh của chúng ta là trong tập dữ liệu thời trang-MNIST hoặc kích thước hình ảnh 224 x 224 được sử dụng bởi mạng neural VGG16 hoặc bất kỳ các kích thước hình ảnh khác mà chúng ta có thể sử dụng.
Kênh Màu Của Hình Ảnh
Axis đại diện cho các kênh màu. Các giá trị điển hình ở đây là 3 cho hình ảnh RGB hoặc 1 nếu chúng ta đang làm việc với hình ảnh thang độ xám. Việc biểu diễn kênh màu này chỉ áp dụng cho đầu vào của tensor.
cách biểu diễn axis này thay đổi sau khi tensor đi qua một lớp convolutional. Cho đến thời điểm này bằng cách sử dụng ba axes cuối cùng, chúng ta đã biểu diễn một hình ảnh hoàn chỉnh dưới dạng một tensor. Chúng ta có các kênh màu, chiều cao và chiều rộng tất cả được trình bày ở dạng tensor sử dụng ba axes.
ề mặt truy cập dữ liệu tại thời điểm này, chúng ta cần ba indexes. Chúng ta chọn kênh màu, chiều cao và chiều rộng để đi đến giá trị pixel cụ thể.
Output Channels Và Feature Maps
Hãy xem cách biểu diễn axis kênh màu thay đổi như thế nào sau khi tensor được biến đổi bởi một lớp convolutional. Giả sử chúng ta có một tensor chứa dữ liệu từ một hình ảnh thang độ xám 28 x 28. Điều này cho chúng ta shape của tensor sau: [1, 1, 28, 28].
Bây giờ, giả sử hình ảnh này được chuyển đến CNN của chúng ta và đi qua lớp chập (convolutional) đầu tiên. Khi điều này xảy ra, shape của tensor và dữ liệu cơ bản sẽ bị thay đổi bởi phép toán tích chập.
Phép chập thay đổi kích thước chiều cao và chiều rộng cũng như số lượng kênh. Số lượng kênh đầu ra thay đổi dựa trên số lượng bộ lọc đang được sử dụng trong lớp chập.
Giả sử chúng ta có ba bộ lọc convolutional và hãy chỉ ra xem điều gì xảy ra với axis của kênh:
Vì chúng ta có ba bộ lọc convolutional nên chúng ta sẽ có ba đầu ra kênh từ lớp tích chập. Mỗi bộ lọc trong số ba bộ lọc chuyển đổi kênh đầu vào ban đầu tạo ra ba kênh đầu ra. Các kênh đầu ra vẫn bao gồm các pixel, nhưng các pixel đã được thay đổi bằng phép toán tích chập. Tùy thuộc vào kích thước của bộ lọc, kích thước chiều cao và chiều rộng của đầu ra cũng sẽ thay đổi. Chúng ta sẽ tìm hiểu chi tiết hơn trong các bài viết tiếp theo.
Feature Maps
Với các kênh đầu ra, chúng ta sẽ không còn có các kênh màu nữa, mà là các kênh đã sửa đổi và được gọi là feature maps. Cái được gọi là feature maps này là kết quả đầu ra của các biến chập diễn ra bằng cách sử dụng các kênh màu đầu vào và các bộ lọc convolutional
Feature maps are the output channels created from the convolutions.
Từ “feature” được sử dụng vì các kết quả đầu ra đại diện cho các đặc trưng cụ thể của hình ảnh, chẳng hạn như các cạnh và các mappings này xuất hiện khi mạng học được trong quá trình đào tạo và trở nên phức tạp hơn khi chúng ta di chuyển sâu hơn vào mạng.
Kết Luận
Bài viết này đã giới thiệu cho chúng ta về shape của một tensor là đầu vào cho CNN. Chúng ta sẽ hiểu sâu hơn về khái niệm này trong các bài đăng tiếp theo khi chúng ta bắt đầu xây dựng CNN của riêng mình. Hi vọng bạn thích bài này.
Hẹn gặp lại bạn trong bài viết tiếp theo!