from tensorflow import keras
keras.layers.Conv2D(10, kernel_size=(3, 3), activation='relu')
Out[1]:
<keras.layers.convolutional.conv2d.Conv2D at 0x188ebe734c8>
Conv2D 클래스
keras.layers.Conv2D(10, kernel_size=(3, 3), activation='relu')
- 첫번째 매개변수: 필터(도장)의 개수
- kernel_size: 필터에 사용할 커널의 크기 지정
- 위에 2개는 반드시 지정해야 하는 매개변수
- 마지막 활성화 함수 지정
- 일반적으로 특성맵은 활성화 함수를 통과한 값이다.
- 커널의 크기, 역시 하이퍼파라미터 => 보통 (3, 3) 혹은 (5, 5)
합성곱 신경망
- 합성곱 층을 1개 이상 사용한 인공 신경망
패딩과 스트라이드
- (4, 4) 크기의 입력
- (3, 3) 크기의 커널을 적용하여 (2, 2) 크기의 특성맵
- 만약 커널 크기 (3, 3)으로 그대로 두고 출력의 크기를 입력과 동일하게 (4, 4)로 만들려면 어떻게 해야 할까?
- 마치 더 큰 입력에 합성곱하는 척해야 한다.
(4, 4) 특성맵만들 수 있는 방법
정답! 입력 배열의 주위를 가상의 원소로 채우기 => 패딩
세임 패딩(same padding)
- 입력과 특성맵의 크기를 동일하게 만들기 위해 입력 주위에 0으로 패딩하는 것을 세임 패딩
- 합성곱 신경망에서는 세임 패딩이 많이 사용된다.
- 즉, 입력과 특성맵의 크기를 동일하게 만든다.
밸리드 패딩(valid padding)
- 패딩없이 순수한 입력 배열에서만 합성곱을 하여 특성맵을 만드는 경우
- 밸리드 패딩은 특성맵의 크기가 줄어들 수 밖에 없다.
- 세임 패딩을 즐겨 사용하는 이유?
- 각 모서리의 3, 7, 3, 8은 커널 도장에 딱 한 번만 찍힌다.
- 반면 다른 원소들은 2번 이상 커널과 계산
- 만약 모서리에 있는 중요한 정보가 특성 맵으로 잘 전달되지 않을 가능성이 높다.
- 반면 가운데 있는 정보는 두드러지게 표현.
- 왼쪽: 패딩X => 중앙부와 모서리 참여 비율 (4:1) // 오른쪽: 패팅O => 중앙부와 모서리 참여 비율 (9:4)
'Deep Learning with Python' 카테고리의 다른 글
Data Augmentation (0) | 2023.04.15 |
---|---|
Train, Test and Validation 구분: take() & skip() (0) | 2023.04.10 |
TensorFlow with 모델 학습 과정 by GPU (0) | 2023.04.08 |
12_합성곱(CNN) 신경망의 구성요소 (0) | 2022.08.16 |