Convolution의 크기

[위의 식이 맞는지 확인하는 코드]
import torch
import torch.nn as nn
# [CNN 만들기]
conv = nn.Conv2d(1, 1, 11, stride=4, padding=0) # 입력 채널1 / 출력 채널 1 / stride 4 / padding 0
conv # Conv2d(1, 1, kernel_size=(11, 11), stride=(4, 4))
# [입력 만들기]
inputs = torch.Tensor(1, 1, 227, 227) # 배치 크기 1 / 채널 1 / 높이 227 / 너비 227
inputs.shape # torch.Size([1, 1, 227, 227])
# [CNN에 입력 넣기]
out = conv(inputs)
out.shape # torch.Size([1, 1, 55, 55])
Perceptron과 Convolution

필터의 각 값과 입력 이미지 픽셀의 각 값을 곱한 것의 합을 퍼셉트론의 출력으로 본다.
pooling layer
import torch
import torch.nn as nn
# [CNN 만들기]
conv = nn.Conv2d(1, 5, 5) # 입력 채널 1 / 출력채널 5 / 커널 크기 5x5
# [입력 만들기]
inputs = torch.Tensor(1, 1, 28, 28) # 배치 크기 1 / 채널 1 / 높이 28 / 너비 28
# [CNN에 입력 넣기]
out = conv(inputs)
# [pooling 레이어 만들기]
pool = nn.MaxPool2d(2) # 커널 크기 2x2
# [pooling 레이어에 입력 넣기]
out2 = pool(out)
print(out.size()) # torch.Size([1, 5, 24, 24])
print(out2.size()) # torch.Size([1, 5, 12, 12])'모두의 딥러닝 > 강의자료 정리' 카테고리의 다른 글
| Lab-10-3: visom 사용법(colab) (0) | 2025.02.13 |
|---|---|
| Lab-10-2: mnis-cnn (0) | 2025.02.13 |
| Lab-09-01~04: ReLU, Weight 초기화, 드롭아웃, 배치 정규화 (1) | 2025.02.04 |
| Lab 08-2: Multi Layer Perceptron (1) | 2025.02.04 |
| Lab 08-1: Perceptron (1) | 2025.01.26 |