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가 있다면 : 목록으로 출력
반응형