Tích chập 2D (padding valid)
Trung bìnhAICNNthị giác máy tính4 test · 12 giây · sai số 1e-5
Cài đặt phép tích chập 2D như trong mạng CNN (thực chất là cross-correlation, không lật kernel), không padding, bước nhảy 1:
out[i, j] = Σ_{u,v} img[i+u, j+v] · kernel[u, v]
Kết quả có shape (H − kh + 1, W − kw + 1).
Viết hàm
conv2d(img, kernel)Tham số
img: ảnh xám (H, W)kernel: bộ lọc (kh, kw)
Trả về
Ma trận (H − kh + 1, W − kw + 1).
Ví dụ
Tham số
img = [[0,1,2],[3,4,5],[6,7,8]] kernel = [[1,0],[0,-1]]
Kết quả
[[-4.0,-4.0],[-4.0,-4.0]]
Mỗi ô = góc trên trái − góc dưới phải = −4
Tham số
img = [[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]] kernel = [[1,1,1],[1,1,1],[1,1,1]]
Kết quả
[[9.0,9.0],[9.0,9.0]]
Bài tiếp theo: Max pooling 2D →
Python · NumPy
Bấm “Chạy thử” để gọi conv2d() với 2 ví dụ trong đề và so sánh kết quả. Dùng print() thoải mái để gỡ lỗi.