- filter 만들기
[ torch.nn.Conv2d(input_channels, output_channels, kernel_size, stride = 1, padding = 0, dilation = 1, groups = 1, bias = True) ]
ex) input: 1장, output: 1장(filter가 1장이므로 output도 1장), kernal size: 3x3일 때
=> conv = nn.Conv2d(1, 1, 3)
out = conv(input)일 때,
- 입력의 형태
1. input type : torch.Tensor
-> 'Tensor타입'이어야 한다
2. input shape : (N x C x H x W)
-> N: batch_size, C: input_channel, H: height, W: width
- output size = [ {input size - filter size + (2*padding)} / stride ] +1
+) 만약 +1 하기 전 값에서 소수점이 발생하면, 소수점은 버리고 정수만 취한다
+) input size가 AxA형태가 아니라 AxB형태인 경우, (A, B)로 넣고 계산한다
ex) 예제 문제 풀이
Neuron(perceptron)과 convolution의 관계
+) filter 역시 bias를 가질 수 있기 때문에 실제 연산 후 출력값은 [계산값 + bias ]
Pooling
: 이미지의 크기를 줄이기 위해 사용한다.
(fully connected 연산을 대체하기 위해 Average Pooling을 사용하기도 함)
실습
convolution과 cross-correlation
실습에서는 filter를 뒤집지 않고 그대로 계산했기 때문에 연산자는 convolution이 아니라 cross-correlation으로 적혀있음