본문 바로가기

카테고리 없음

[코딩] 08-1 합성신경망

반응형
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차원으로 펼침
반응형