일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Flutter
- AI
- 유데미
- 파이썬
- 선형회귀
- map
- 회귀
- 인공지능
- 42서울
- 지정헌혈
- 42경산
- RNN
- 크롤러
- Regression
- 플러터
- 자연어처리
- 크롤링
- CV
- 앱개발
- 딥러닝
- filtering
- 모델
- pytorch
- 피플
- 코딩애플
- Computer Vision
- mnist
- 머신러닝
- 데이터분석
- 선형대수학
- Today
- Total
David의 개발 이야기!
합성곱연산 ( CNN ) 이란 무엇일까? - 2편 본문
9. 배치 처리를 해보자
합성곱연산도 배치처리를 지원한다. 그래서 각 계층을 흐르는 데이터의 차원을 하나 늘려 4차원 데이터로 저장한다. ( 데이터수, 채널 수, 높이, 너비 ) 순으로 저장한다. 데이터가 N개 일때, 아래의 그림과 같이 된다.
위 그림을 보면, 각 데이터의 선두에 배치용 차원이 추가되어있다. 이처럼 데이터는 4차원 형상을 가진 채 각 게층을 타고 흐른다. 여기서 주의할 점은, 신경망에 4차원 데이터가 하나 흐를때마다, 데이터 N개에 대한 합성곱 연산이 이뤄진다는 것이다! N 회분의 처리를 한번에 수행하는 의미이다!
10. 풀링 계층
풀링은 세로 가로 방향의 공간을 줄이는 연산이다.
위 그림은 최대풀링( 맥스 풀링 max pooling )을 스트라이드 2로 처리하는 것을 보여준다. 최대풀링은 최댓값을 구하는 연산을 의미한다.
[ 풀링 계층의 특징 ]
학습해야할 매개 변수가 없다.
풀링계층은 합성곱 계층과 학습해야할 매개변수가 없다.
풀링은 대상 영역에서 최댓값이나 평균을 취하는 명확한 처리이므로 특별히 학습할 것이 없다.
채널수가 변하지 않는다.
풀링 연산은 입력데이터의 채널 수 그대로 출력 데이터로 내보낸다.
입력의 변화에 영향을 적게 받는다.
입력데이터가 조금 변해도 풀링의 결과는 잘 변하지 않는다.
11. 합성곱/풀링 계층 구현하기
01. 4차원 배열
높이 28, 너비 28, 채널 1개인 데이터 10개 만드는 방법은 아래와 같다.
02 im2col (image to column) 로 데이터 전개하기
im2col 은 입력데이터를 필터링(가중치계산)하기 좋도록 전개하는 (펼치는) 함수이다.
im2col 은 필터링하기 좋게 입력 데이터를 전개한다.
아래와 같이 입력데이터에서 필터를 적용하는 영역을 한 줄로 늘어놓는다.
위 그림과 같이 im2col 방식으로 출력한 결과는 2차원 행렬이다. CNN 은 데이터를 4차원 배열로 저장하므로 2차원인 출력 데이터를 4차원으로 변형한다.
'밑바닥부터 시작하는 딥러닝' 카테고리의 다른 글
NLP 에 대해 알아보자 (1) - 시소러스를 활용한 기법, 통계 기반 기법 (0) | 2022.05.19 |
---|---|
신경망 학습에 대해 알아보자 (0) | 2022.05.15 |
모델의 예측값과 test_data의 라벨값 비교해 정확도 출력하는 프로그램 만들기 feat. MNIST data (0) | 2022.05.15 |
신경망이란 무엇일까? (0) | 2022.05.15 |
합성곱 신경망 ( CNN ) 이란 무엇일까? - 1편 (0) | 2022.05.12 |