군침이 싹 도는 코딩

CNN 의 구조 본문

Python/Deep Learning

CNN 의 구조

mugoori 2022. 12. 30. 12:57
def build_model() :
  model = Sequential()
  model.add( Conv2D(16, (3,3), activation='relu', input_shape=(300,300,3) ) )
  model.add( MaxPooling2D((2,2), 2 ) )
  model.add( Conv2D(32, (3,3), activation='relu' ) )
  model.add( MaxPooling2D((2,2), 2 ) )
  model.add( Conv2D(64, (3,3), activation='relu' ) )
  model.add( MaxPooling2D((2,2), 2 ) )
  # ------------------------------------
  model.add( Flatten() )
  
  model.add( Dense(512, 'relu') )
  model.add( Dense(1, 'sigmoid'))
  model.compile('rmsprop', 'binary_crossentropy', ['accuracy'])
  return model

# CNN의 구조는 코드로 보면 이렇다

기본 뼈대는 ANN과 비슷하지만 들어가는 파라미터가 약간 다르다

Conv2D 는 컨볼루션의 종류이고 처음 파라미터로 필터가 들어간다

필터는 ANN의 유닛과 비슷한것이라고 보면 된다

두번째 파라미터는 커널의 행열이 들어간다 그리고 액티베이션을 동일하게 relu로 해준다

인풋 쉐입은 해당 이미지파일의 가로,세로,흑백1/컬러3으로 구성된다

MaaPooling2D는 풀링으로 파라미터는 풀링의 가로세로, 스트라이더로 구성된다

이것을 원하는 만큼 반복하고 Flatten으로 평탄화 한 뒤

ANN을 붙이면 된다