KT AIVLE

KT AIVLE(KT 에이블스쿨) 5기 DX트랙_ 딥러닝 기초_CNN

gonii00 2024. 4. 15. 22:03
728x90

[ 딥러닝 구조 - CNN ] 

1. input_shape : 분석 단위인 이미지 한 장의 크기 (픽셀 사이즈, 가로 * 세로 * 채널) 

- 흑백 : 채널 = 1 

- 컬러 : 채널 = 3 

 

2. Convolutional Layer: 필터지역적인 특성(feature)을 뽑는 과정 

 

3. Max pooling Layer: 뽑은 특징을 요약(압축) 

 

4. 펼쳐서(Flatten), Dense Layer에 연결 

 

=> 4차원 data셋 요구 (input_shape = (,,) 3차원) 

[ CNN 코드 ]

1) ConvNet 

Conv2D(32, kernel_size = (3,3), input_shape(5, 5, 1), padding = 'same'. strides = (1,1), activation = 'relu'),

특히 Conv2D: 이미지 분석에 주로 사용 

- 데이터에 담겨 있는 지역적 특징을 추출 

- 필터(커널): 개수 32개 

   - 2차원으로 이동하며 Feature Map 구성 

   - kernel_size = (3,3) 가로 3, 세로 3, 가로세로 길이가 같으면 kernel_size = 3 

 

Stride: 몇 칸 씩 이동할 것인지 지정 

- strides = (1,1) 가로, 세로 이동 칸 수 

 

Padding

- size 유지되도록 이미지 둘레에 0으로 덧대기

 

2) MaxPooling 

MaxPooling2D(pool_size=(2,2), strides = (2,2)),

 - 출력데이터의 크기를 줄이거나 특정 데이터를 강조하기 위해 사용 

- pooling_size: 풀링 크기 행 x duf 

- strides: 생략하면 pool_size와 동일 

 

3) Flatten과  Dense Layer 

Flatten(), 
Dense(128, activation='relu'),
Dense(10, activation='softmax')

CNN + MaxPooling Layer로 특징을 추출한 후에, 최종 예측 결과로 뽑기 위해서는 (1차원 혹은 단일 값)

Dense Layer로 연결

 

1+2+3) CNN 전체코드 

model2 = Sequential([Conv2D(16, kernel_size = 3, input_shape=(28, 28, 1),
                           padding='same', activation='relu'),  # strides = 1(기본값,1)
                    MaxPooling2D(pool_size = 2 ),             # strides = 2(기본값이 pool_size 동일)
                    Flatten(),
                    Dense(128, activation='relu'),
                    Dense(10, activation='softmax')  # 다중분류
])

model2.summary()

 

 

요약

CNN 학습 

-  지역적인 특징을 추출하는 필터 만들기 (Conv2d) 

-  필터로 뽑아낸 특징을 요약(MaxPooling) 

-  최종 특징 값들을 펼쳐서 (Flatten), Dense Layer에 연결하기 

 

성능관리

1) 데이터

- 입력 데이터 정제, 적절한 전처리

- 데이터 늘리기: 열(적절한 feature 추가), 행(데이터 건수 늘리기) 

 

2) 모델 구조 

- 은닉층, 노드 수 늘리기: 성능이 증가할 때 까지 

- activation 

 

3) 학습 

epochs, learning_rate, optimizer 

 

4) 과적합 문제 

- 모델링 목적: 모집단 전체에서 두루 잘 맞추는 적당한 모델 만들기 

- 과적합: 학습 데이터에서만 높은 성능, 다른 데이터에서는 낮은 성능 

 

5) 과적합 문제 해결 

- 데이터 건수 늘리기 

- 모델 복잡도 조절하기 -> 가중치 규제 

- 반복 학습 횟수(epochs) 적당히 -> early stopping 

 

6) 모델 저장하기 

- 최종 모델 저장 

- 체크포인트에서 모델 저장