반응형
CNN(Convolutional Neural Network, 합성신경망)
- 필터 : 뉴런의 개수
- 커널 : 입력에 곱해지는 가중치
from tensorflow import keras
keras.layers.Conv2D(10, kernel_size = (3,3), activation = 'relu')
#10은 필터의 개수, kernel_size 는 보통 (3,3) 또는 (5,5)를 권장
- 패딩 : 입력 배열의 주위를 가상의 원소로 채우는 것
- 세임패딩 : 입력 주위에 0으로 패딩
- 밸리드 패딩 : 패딩 없이 순수 입력 배열로만 합성곱 하는 경우
keras.layers.Conv2D(10, kernel_size = (3,3), activation = 'relu', padding = 'same')
- 스트라이드 : 필터(도장)가 이동하는 칸의 개수, 기본값은 1
keras.layers.Conv2D(1-, kernel_size = (3,3), activation = 'relu',
padding = 'same', strides = 1)
- 풀링 : 특성맵의 가로세로 크기를 줄이는 역할, 맵의 개수는 줄어들지 않음. ex) (2, 2, 3) → (1, 1, 3), 풀링은 가중치도 없고 풀링 크기와 스트라이드도 같고 패딩도 없음
- 최대풀링 : 큰 값을 고름
- 평균풀링 : 평균값을 고름
keras.layers.MaxPooling2D(2, strides=2, padding = 'valid')
# 또는 AveragePooling2D
합성신경망 전체구조
① 합성망층
- 사용할 커널의 크기는 (3, 3), 세임패딩이므로 1픽셀이 입력 데이터 주변에 추가
- 합성곱의 필터는 3개, 각각 (3,3) 크기, 절편이 하나씩 있음(ⓑ, 도장 끝에)
- 따로 언급이 없어서 스트라이드는 항상 1
② 풀링층
- 보통 (2, 2) 풀링을 사용해 절반으로 줄임
- 특성맵의 개수는 변하지 않으므로 (4, 4, 3) → (2, 2, 3)
③ 밀집층
- Flatten 클래스로 3차원 배열을 1차원으로 펼침
반응형