Asked Nov 20th, 10:42 a.m. 85 1 1
  • 85 1 1
+1

Thắc mắc về Convolution Layer trong CNN

Share
  • 85 1 1

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:

H(caOutput):HF+2PS+1 W(caOutput):WF+2PS+1H (của Output): \frac{H - F + 2P}{S} + 1 \\\ W (của Output): \frac{W - F + 2P}{S} + 1

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.

1 ANSWERS


Answered Nov 21st, 1:44 p.m.
Accepted
+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])
Share
Viblo
Let's register a Viblo Account to get more interesting posts.