일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- BOJ 1931
- BOJ 1541
- 딥러닝
- 분류
- 프로그래머스 단어변환 파이썬
- 코딩테스트
- TensorFlow
- ML
- tensor
- 백준 잃어버린괄호 파이썬
- keras
- 프로그래머스 단어변환
- 코테
- Machine Learning
- classification
- 프로그래머스 단어변환 bfs
- 프로그래머스 게임맵최단거리 파이썬
- 백준 1541 파이썬
- 머신러닝
- 프로그래머스bfs
- 백준 잃어버린괄호
- BOJ 1541 파이썬
- 프로그래머스 게임맵최단거리
- BFS
- 다중분류
- 백준 1931 파이썬
- 로지스틱회귀
- BOJ 1931 파이썬
- LogisticRegression
- 프로그래머스 BFS
- Today
- Total
그래도해야지어떡해
패딩(padding)/스트라이드(stride)/풀링(Pooling)이란? 본문
padding(패딩)
: convolution(합성곱)을 수행할 때, 입력 배열의 주위를 가상의 원소(0)로 채우는 것
- 패딩의 역할?
: 순전히 커널이 입력 배열 위를 거쳐가는 횟수를 늘려주는 것 밖에 없다. -> 실제값은 0으로 채워져 있기 때문에 계산에 영향을 미치지는 않음
- same padding
: 입력과 feature map의 크기를 동일하게 만들기 위해 입력 주위에 0으로 패딩하는 것
- valid padding
: 패딩없이 순순한 입력 배열에서만 합성곱을 하여 feature map을 만드는 것
* convolution을 할 때 패딩을 왜 자주 사용할까?
: 패딩이 없다면 모서리 부분에 있는 입력 원소는 적게 지나가기 때문에 모서리에 있는 중요한 정보가 feature map으로 잘 전달되지 않을 수 있음
-> 적절한 패딩은 이미지 주변에 있는 정보를 잃어버리지 않도록 도와준다!
keras.layers.Conv2D(10, kernel_size=(3,3),activation='relu', padding='same')
keras의 Conv2d 클래스에서 padding 매개변수로 패딩을 지정할 수 있음(default는 valid)
- convolution layer는 activation 함수로 relu함수를 많이 사용한다.
Stride란?
: convolution 연산을 할 때 한번에 이동하는 크기 = 칸의 수
keras.layers.Conv2D(10, kernel_size=(3,3),activation='relu', padding='same', stride=1)
- stride는 보통 1로 사용함
Pooling이란?
: convolution layer에서 만든 feature map의 가로세로 크기를 줄이는 역할을 한다. -> 하지만 feature map의 개수는 줄지 않음
-풀링도 convolution연산처럼 입력값위를 지나가면서 수행을 한다.
- 하지만 풀링에는 가중치가 없기 때문에 연산을 하는것이 아니며 단지 수행 영역에서 가장 큰 값을 고르거나(Max pooling) 수행 영역의 평균을 구하는(Average poolinf) 역할을 한다.
- 풀링은 convolution layer와 뚜렷하게 구분이 되기 때문에 pooling layer라고 불린다.
- 풀링은 convolution 연산과는 다르게 겹치지 않고 이동해야 한다!
keras.layers.MaxPooling2D(2)
keras에서는 MaxPooling2D 클래스로 풀링을 수행한다.
- 보통 대부분 풀링의 크기는 2로 사용한다 -> 가로세로의 길이가 절반으로 줄어듬
- 많은 경우 AveragingPooling보다 MaxPooling을 더 많이 사용한다.
- AveragingPooling은 feature map에 있는 중요한 정보를 희석시킬 수 있기 때문
- convolution 연산에서 stride를 크게하여 feature map을 줄이는 것보다 pooling layer에서 크기를 줄이는 것이 경험적으로 더 나은 성능을 내기 때문
convolution network는 보통 이런식으로 feature map을 생성하고 pooling에서 크기를 줄이는 구조가 쌍을 이룬다.
'ML' 카테고리의 다른 글
convolution network를 사용한 이미지 분류 - classification 실습/ 모델 구조 출력하기 / 모델 학습 중 feature map의 shape 확인하기 (0) | 2022.03.09 |
---|---|
컬러이미지(3차원)을 사용한 convolution 연산 (0) | 2022.03.08 |
Convolution이란? - CNN(Convolution Neural Network) (0) | 2022.03.07 |
신경망 모델 훈련 - dropout, train loss/test loss 시각화, 그래프, callback, 모델 저장, 모델 불러오기, 파라미터 저장, 파라미터 불러오기 (0) | 2022.03.03 |
flatten layer와 optimizer (0) | 2022.02.25 |