Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions week7/4팀_송종명.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# 합성곱 신경망(CNN)

- 밀집층(Dense Layer): 모든 입력에 가중치를 곱한다. -> 뉴런, 유닛
- 합성곱층(Convolution Layer): 3~5개의 가중치가 이동하면서 곱해진다. -> 커널, 필터

입력차윈과 커널의 차원이 동일해야한다. 보통 합성곱 신경망은 이미지 분류에 사용되기 때문에 입력이 2차원이다.

커널의 크기는 하이퍼 파라미터를 통해 조절할 수 있지만 일반적으로 (3, 3) 또는 (5, 5) 크기를 사용한다.

합성곱 계산을 통해 얻은 출력을 특성 맵(feature map)이라고 부른다.

- 패딩: 입력 배열 주위를 0으로 채우는 것
- 세임 패딩: 입력과 출력의 크기를 동일하게 만드는 것
- 벨리드 패딩: 패딩 없이 입력 배열로만 특성맵을 만드는 것
- 스트라이드: 커널이 이동하는 간격
- 풀링: 특성맵의 크기를 줄이기 위해 평균 또는 최대값을 구하는 것

---

## 합성곱 신경망 모델 만들기

입력층 -> 합성곱층 -> 풀링층 -> flatten층 -> 밀집층 순으로 구성한다

```python
from tensorflow import keras

model = keras.Sequential()

model.add(keras.layers.Conv2D(32, kernel_size=3, activation='relu', padding='same', input_shape=(28, 28, 1)))
model.add(keras.layers.MaxPooling2D(2))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(100, activation='relu'))
```

- keras.layers.Conv2D: 합성곱 신경망 층을 하나 만들어준다.
- kernel 개수를 정해준다
- kernel_size: 커널 사이즈로 일반적으로 3 또는 5를 선택한다.
- activation: 활성화 함수의 종류를 정해준다.
- padding: 패딩의 종류를 정해준다. default값은 valid이다

- keras.layers.MaxPooling2D: 최대 풀링 층을 하나 만들어준다.
- kernel_size: 풀링 커널의 크기를 정해준다.

- keras.layers.Flatten: 2차원 배열을 1차월 배열로 펴주는 층을 하나 만들어준다.

- keras.layers.Dense: 밀집층 하나를 만들어준다.
- 뉴런의 개수를 정해준다.
- activation: 활성화 함수를 정해준다.