nn.Conv2d(3, 32, 3, padding=1)

 

첫번째 parameter 인 3은 input_channel_size가 되겠습니다. 여기서 input_channel_size는 Input Image의 RGB depth 인 3이 되겠습니다. (즉, 32*32 Image 3장이 들어간다고 보면 되겠습니다.)

 

두번째 parameter 인 32는 output_volume_size입니다. 즉, conv1 layer를 거쳐 몇장의 필터를 만들어 내고 싶은가? 입니다. 32장의 필터를 만들어 내고 싶으므로, 32가 되겠습니다.

 

세번째 parameter는 kernel_size입니다. Filter_size라고도 불리기도 하는데, 말 그대로 filter의 사이즈를 정의하는 것입니다. 3*3 filter를 사용하고 싶기 때문에 3을 기입했습니다.

 

네번째 parameter 인 padding=1은 padding을 줄지 말지 여부와 padding 사이즈를 지정해 줍니다. 저는 padding 을 임의로 1 주었습니다.

 

마지막으로, stride는 따로 주지는 않았지만, 따로 주지 않으면 default로 stride=1 속성이 지정됩니다.

 


Conv_Size

 

예제 1) 

  1. 227 - 11 + (2 * 0) = 226
  2. 226 / 4 = 54
  3. 54 + 1 = 55

예제 2) 소수점이 있는 경우, 소수점을 버림

  1. 64 - 7 + (2 * 0 ) / 2 = 28.5 
  2. 28 + 1 = 29

예제 3)

  1. 32 - 5 + (2 * 2) / 1 = (27 + 4 ) / 1 = 31
  2. 31 + 1 = 32

예제 4) Input size가 다른 경우

  1. (32, 64) - 5 + (2 * 0)  / 1 = ((32-5, 64-5 / 1 )
  2. ((27, 59) / 1 ) + 1 = 28 * 60 
  3. out.shape >> torch.Size([1, 1, 28, 60])

예제 5)

  1. 64 * 32
  2. out.shape >> torch.Size([1, 1, 64, 32])

 

출처:

1. https://wegonnamakeit.tistory.com/48

2. https://teddylee777.github.io/pytorch/conv2d-output-size-%EA%B3%84%EC%82%B0%EB%B2%95

+ Recent posts