지난 포스팅의 확장입니다. 실제 MNIST 데이터에 적용하기
MNIST 데이터의 크기는 [28 x 28]의 이미지라고 말씀드렸어 이걸 한 줄로 죽 늘어뜨리면 [1 x 784] vector로 표현할 수 있습니다.
그럼 지난 포스팅에서 봤던 input layer
그다음은 Hidden layer
크게 하면 연산량이 많아지며 복잡한 문제를 해결할 수 있는 가능성이 생기고요
작게 하면 그 반대입니다 Vise Versa.
저는 그냥 [1 x 100] 사이즈의 vector로 만들어 주겠습니다.
마지막으로 output layer
그럼 순서대로 [1 x 784], [1 x 100], [1 x 10]의 vector들로 layer들이 결정됐으니
그 사이에 들어갈 행렬
자 그렇게 정해진 사이즈로 초기화를 먼저 해보겠습니다~!
W_0 = np.random.rand(784,100)
W_1 = np.random.rand(100,10)
이제 계산을 해봐야겠죠?!
Hidden layer
Output layer
결국
Output layer
사이즈는 [1 x 784] x [784 x 100] x [100 x 10] = [1 x 10]으로 결정되겠습니다.
Hidden_layer = np.dot(Input_layer , W_0)
Output_layer = np.dot(Hidden_layer , W_1)
Output_layer = np.dot(np.dot(Input_layer , W_0) , W_1)
이걸로 끝일까요? 절대 아니겠죠? ㅋㅋ 다음 포스팅에서 더 자세한 설명 추가됩니다.
'Have Done > MLP' 카테고리의 다른 글
MLP from Scratch with Numpy [5 / 7] - backpropagation1 (0) | 2022.01.06 |
---|---|
MLP from Scratch with Numpy [4 / 7] - feed forward 코딩 흐름 (0) | 2022.01.05 |
MLP from Scratch with Numpy [3 / 7] - Activation (0) | 2022.01.04 |
MLP from Scratch with Numpy [1 / 7] - feed forward1 (0) | 2022.01.03 |
MLP from Scratch with Numpy [0 / 7] - Classification 사전작업 (0) | 2022.01.03 |
댓글