Tự viết phép pooling của bạn
Như bạn đã thấy, các CNN có thể có rất nhiều tham số. Các tầng pooling thường được chèn giữa các tầng tích chập của mạng nơ-ron để tóm tắt đầu ra theo cách cô đọng và giảm số lượng tham số ở tầng tiếp theo. Điều này hữu ích nếu bạn muốn huấn luyện mạng nhanh hơn, hoặc khi bạn không có đủ dữ liệu để học một lượng tham số rất lớn.
Một tầng pooling có thể được mô tả như một dạng tích chập đặc biệt. Với mỗi cửa sổ trong đầu vào, nó tìm giá trị điểm ảnh lớn nhất và chỉ truyền giá trị này. Trong bài tập này, bạn sẽ tự viết phép max pooling, dựa trên đoạn mã mà trước đó bạn đã dùng để viết phép tích chập hai chiều.
Bài tập này là một phần của khóa học
Mô hình hóa ảnh với Keras
Hướng dẫn bài tập
- Truy cập vào mảng đầu vào (
im) và chọn đúng cửa sổ. - Tìm giá trị lớn nhất trong cửa sổ này.
- Gán giá trị đó vào phần tử tương ứng trong mảng đầu ra (
result).
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Result placeholder
result = np.zeros((im.shape[0]//2, im.shape[1]//2))
# Pooling operation
for ii in range(result.shape[0]):
for jj in range(result.shape[1]):
result[ii, jj] = np.max(____)