+1
Thắc mắc về Convolution Layer trong CNN
Chào mọi người, hiện tại em đang tìm hiểu về Neural Network và đang dừng lại ở CNN (Convolution Neural Network) . Theo em được biết, khi mình tạo ra 1 Convolution Layer thì mình sẽ có:
- 1 Kernel có kích thước (F, F, K), Stride:S, Padding:P để chiếu qua hình ảnh
- 1 hình ảnh có kích thước (H, W, D) được tính tổng theo element-wise
- 1 Output của Convolution Layer đó là 1 Tensor (H, W, K) được tính như sau:
Trong đó:
- H: Chiều cao của Kernel hoặc ảnh
- W: Chiều rộng của Kernel hoặc ảnh
- D: Số chiều của ảnh
- F: kích thước của Kernel
- K: Số lượng Kernel dùng để chiếu
Nhưng đối với hình dưới đây thì không theo format như trên: - Ngay phần conv1 feature map kích thước không được tính bằng công thức trên, vậy thì hình trên liệu có đúng hay không ? Nếu hình đúng thì em đã bỏ sót phần nào về Convolution Layer này ạ ?
Em xin cảm ơn các anh/chị đã dành thời gian xem câu hỏi của em.
Thêm một bình luận
1 CÂU TRẢ LỜI
+1
Hình này sai nhé
Để chắc ăn thì mình có viết 1 đoạn code để tính luôn cho bạn shape của conv1 feature map
import torch
import torch.nn as nn
conv = nn.Conv2d(kernel_size=5, out_channels=16, stride=1, in_channels=1)
input_tensor = torch.randn((1, 1, 28, 28))
output_tensor = conv(input_tensor)
print(output_tensor.shape)
>>> torch.Size([1, 16, 24, 24])