11-1. ConvNet의 Conv 레이어 만들기

Convolutional Neural Network (CNN)

기본적인 아이디어는 고양이 실험에서 시작되었다.
어떤 그림을 고양이한테 보여줬을 때 일부만 바라보는 뉴런들이 있어서 입력을 나누어 받는 것으로 생각해서 만들어진 뉴럴 네트워크이다.

Convolutional Neural Network 를 이용해서 자른 다음에 RELU를 이용해서 학습을 하고 Pooling을 하고, 그 과정을 몇 번 반복한 뒤 최종적으로 Fully Connected 방식을 사용해 Label을 붙여서 구분할 수 있다.

이미지에 서 필터를 적용해서 일부를 읽고, 옆으로 이동해서 전체를 훑는다.

5x5x3 (색깔은 RGB라 3 고정, 필터 사이즈는 정하면 된다.)
필터는 궁극적으로 한 값으로 만들어 낸다. (Wx + b 를 사용, ReLU(Wx + b) 해도 된다.)
여기서 Weight 이 어떤 입력이 왔을 때 어떻게 출력할 지를 결정하는 값이라고 볼 수 있다.

하나의 필터, 즉 같은 Weight 를 가진 필터를 적용해서 전체 이미지를 읽는다.

얼마나 많은 개수의 점(값)을 얻을 수 있나?

아래 이미지에서는 좌우로 5번, 밑으로 5번 해서 output 5 x 5
한칸씩 움직인 경우 (Stride = 1)
Stride = 2 -> 3X3 Output! (2칸씩 움직이는 것)

N * N(전체), F * F(필터)일 경우의 Output 개수(Stride가 많아질 경우 점점 줄어든다. 작아질수록 정보 손실이 있을 수 있어서 Padding을 사용한다.)그림이 급격하게 작아지는 걸 방지하고 끝쪽이 모서리라는 걸 알려주기 위해 Padding 을 한다.
Conv Layer를 실행시켜도 처음과 같은 7X7로 만들어 준다.

Output (?, ?, ?) 세번 째 수는 필터 개수(6)와 같다. 앞에 두개는 위에 있는 식으로 계산하면 된다.

여러번 Convolution Layer 를 사용하는 것. 깊이를 넓게(6)

Weight의 갯수는 얼마나 될까?
중간은 5x5x3x6. 옆에는 5x5x6x10
이것도 다른 것처럼 random 하게 초기화하고 학습을 한다.

results for ""

    No results matching ""