이미지 위에 stride 값 만큼 filter을 이동시키면서 겹쳐지는 부분의 각 원소의 값을 곱해서 모두 더한 값을 출력으로 하는 연산
stride : filter를 한번에 얼마나 이동 할 것인가
padding : zero-padding
padding이 1 증가 할 때마다 0으로 둘러 쌓인 boundary 생김
torch.nn.Conv2d(*in_channels, out_channels, kernel_size, strdie=1, padding=o,
dilation=1, groups=1,bias=True*)
"""
input image size : 227*227
filter size = 11 * 11
stride = 4
padding = 0
output image size = ?
"""
conv = nn.Conv2d(1,1,11,stride=4, padding=0)
inputs = torch.Tensor(1,1,227,227)
out = conv(inputs)
out.shape # torch.Size([1, 1, 55, 55])
Max Pooling
(2*2) 안에서 가장 큰 값 내보낸다
Average Pooling
(2*2) 안에서 평균을 계산해서 내보낸다
input = torch.Tensor(1,1,28,28)
conv1 = nn.Conv2d(1,5,5)
# input 채널 1개 output 5개 filter size 5
pool = nn.MaxPool2d(2)
out = conv1(input)
out2 = pool(out)
inputs = torch.Tensor (1,1,28,28)
conv1 = nn.conv2d(1,32,3,padding=1)
pool = nn.Maxpool2d(2)
conv2 = nn.conv2d(32,64,3,padding=1)
out = conv1(inputs)
out = pool(out)
out = conv2(out)
out = pool(out)
out = out.view(out.size(0),-1)
fc = nn.Linear(3136, 10)
out = fc(out)