AI study/딥러닝 프레임워크

[keras] CNN 모델 구성 살펴보기

감자 🥔 2021. 3. 3. 21:09
반응형

내가 헷갈려서 정리!

모델 하나를 예시로 들어서 매개변수를 설명해보겠다.

1. 모델 생성

model = models.Sequential()
  • keras의 Sequential 모델 사용
    • 계층을 선형으로 쌓은 모델을 의미

2. 층 (Layer) 추가

모델 구성

INPUT → 콘볼루션 레이어 (Conv2D) → ReLU 함수 → 맥스 풀링 레이어(MaxPooling2D)

 콘볼루션 레이어 (Conv2D) → ReLU 함수 → 맥스 풀링 레이어(MaxPooling2D)

 콘볼루션 레이어 (Conv2D) → 완전연결계층 (Dense) → softmax함수  OUTPUT

 

model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28,28,1)))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64, (3,3), activation='relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64, (3,3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
model.summary()

 

  • model.add 함수를 이용해서 한 층씩 쌓아간다.
  • Conv2D : 콘볼루션 레이어
    • 파라미터
      • Conv2D(filter=32, kernel_size = (3,3), activation = 'relu', input_shape = (28,28,1))
  • MaxPooling2D : 맥스 풀링 레이어
    • 파라미터
      • MaxPooling2D((2,2))
      • strides 가 (2,2) 라는 뜻
  • Flatten()
    • Dense층에 입력되려면 1차원의 배열이어야 하기때문에 Flatten()함수를 사용하여 1차원배열로 만들어주는것
  • Dense : 완전 연결 NN 레이어
    • 모델을 완성하려면 마지막 합성곱층의 크기 (3,3,64) 를 하나 이상의 Dense층에 주입해서 분류 수행 필요
    • Dense(64, activation = 'relu')
      • 출력노드 개수 64개, 활성화함수 relu 사용
    • Dense(10, activation = 'softmax')
      • 마지막 출력 노드를 10개로 지정하고, softmax 함수를 최종 활성화 함수로 사용

3. model.fit 함수 적용

model.fit(X_train, Y_train,
	 batch_size = batch_size,
         nb_epoch = nb_epoch,
         verbose = 2,
         validation_data = (X_test, Y_test))
  • model.fit 파라미터
    • x : 입력데이터
    • y : 라벨 (타겟값)
    • batch_size : 배치 크기
    • nb_epoch : 학습 epoch 횟수
    • verbose : 로깅 설정
      • 0: 없음, 1: 프로그래스바, 2: epoch당
    • valication_data: (X,Y) 의 검증데이터
    • shuffle : 각 epoch마다 샘플을 섞을지 여부

4. model.evaluate 함수

model.evaluate(X_test,Y_test, verbose = 0)
  • model.evaluate 파라미터
    • x,y : 검증데이터 입력
    • batch_size : 배치크기
    • verbose : 출력모드 (0 or 1)
  • model.evaluate 리턴값 (결과)
    • 모델 metrics가 없다면 : loss값으로 출력
    • 모델 metrics가 있다면 : 목록으로 출력
반응형