CNN 개념
이미지 인식과 음성 인 식 등 다양한 곳에서 사용되는데, 특히 이미지 인식 분야에서 딥러닝을 활용한 기법은 거의 다 CNN을 기초로 한다. ‘합성곱 계층 Conv ’과 ‘풀링 계층 Pooling ’이 추가된
oaho.tistory.com

여기에서 사용하는 합성곱 계층은 모두 3×3 크기의 작은 필터로, 층이 깊어지면서 채널 수가 더 늘어나는 것이 특징이다.(합성곱 계층의 채널 수는 앞 계층에서부터 순서대로 16, 16, 32, 32, 64, 64로 늘어간다.)
또 그림과 같이 풀링 계층을 추가하여 중간 데이터의 공간 크기를 점차 줄여간다.
그리고 마지막 단의 완전연결 계층에서는 드롭아웃 계층을 사용한다.
가중치 초깃값으로 He 초깃값을 사용하고, 가중치 매개변수 갱신에는 Adam을 이용한다.
▪ 3×3의 작은 필터를 사용한 합성곱 계층
▪ 활성화 함수는 ReLU
▪ 완전연결 계층 뒤에 드롭아웃 계층 사용
▪ Adam을 사용해 최적화
▪ 가중치 초기값은 'He의 초기값'
⭐ Conv2D()
:컨볼루션 층을 추가하는 함수 :
model.add(Input(shape=(28, 28, 1)))
맨 처음 층에는 입력되는 값을 알려 주어야 한다.
input_shape=(행, 열, 색상 또는 흑백) 형식으로 정한다. 만약 입력 이미지가 색상이면 => 3 흑백이면 => 1
model.add(filters=64, Conv2D(32, kernel_size=(3,3), strides=(1,1), activation='relu'))
1. filters: 커널을 몇 개 적용할지 정한다. 여기서는 32개의 커널을 적용했다.
2. kernel_size: 커널의 크기를 정한다.kernel_size=(행, 열) 형식으로 정하며, 여기서는 3×3 크기의 커널을 사용하게끔 정했다.
3. strides : 훑는 필터의 가로 세로 사이즈
4. activation: 사용할 활성화 함수를 정의한다.
⭐ 맥스 풀링(max pooling)
컨볼루션 층 ==> 이미지 특징 도출
but. 여전히 크고 복잡하다. -> 다시 한 번 축소해야함 => "풀링(pooling)"
▪ 맥스 풀링(max pooling) : 정해진 구역 안에서 최댓값을 뽑아냄
▪ 평균 풀링(average pooling) : 평균값을 뽑아냄
ex) 맥스 풀링
1 | 0 | 1 | 0 |
0 | 4 | 2 | 0 |
0 | 1 | 6 | 1 |
0 | 0 | 1 | 0 |
==>
4 | 2 |
1 | 6 |
: 불필요한 정보 간추림
맥스풀링 층 추가
model.add(MaxPooling2D(pool_size=(2,2), strides=(1,1)))
⭐ 드롭아웃(Dropout)
드롭아웃 기법 : 과적합을 방지하기 위해 은닉층에 배치된 노드 중 일부를 임의로 꺼 주는 것
25%의 노드를 끔
model.add(Dropout(0.25))
⭐ 플래튼(Flatten)
컨볼루션 층이나 맥스 풀링은 주어진 이미지를 2차원 배열인 채로 다룬다.
Flatten() 함수 : 2차원 배열 -> 1차원으로 바꿔줌
model.add(Flatten())
CNN을 이용한 MNIST 데이터셋 모델링 과정
Conv2D, max pooling, Dropout, Flatten CNN 개념 이미지 인식과 음성 인 식 등 다양한 곳에서 사용되는데, 특히 이미지 인식 분야에서 딥러닝을 활용한 기법은 거의 다 CNN을 기초로 한다. ‘합성곱 계층 Conv
oaho.tistory.com
'AI > DeepLearning' 카테고리의 다른 글
이미지들을 배열 데이터셋으로 만들기 (0) | 2023.03.31 |
---|---|
CNN을 이용한 MNIST 데이터셋 모델링 과정 (0) | 2023.03.17 |
CNN 개념 (0) | 2023.03.14 |
multi-input & Concatenate layer / Add layer (0) | 2023.03.06 |
딥러닝 파라미터, 라이브러리 정리 (0) | 2023.03.06 |