본문 바로가기
MLP from Scratch with Numpy [4 / 7] - feed forward 코딩 흐름 google colab이나 jupyter notebook에서 작동 가능한 코드들입니다. MNIST데이터를 받기위한 사전 작업 해주시고~ import numpy as np import pandas as pd import random import matplotlib.pyplot as plt import os os.environ['KAGGLE_USERNAME'] = # username os.environ['KAGGLE_KEY'] = # key 압축해제 해주시고~ !kaggle competitions download -c digit-recognizer !unzip -q test.csv.zip !unzip -q train.csv.zip 변수 저장 해주겠습니다~! train=pd.read_csv('train.csv.. 2022. 1. 5.
MLP from Scratch with Numpy [3 / 7] - Activation 지난 포스팅에 행렬 계산을 해보았습니다. 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) 저 정도 계산으로 특별한 성능을 기대한다면 너무 욕심이겠죠? 이제 진짜 시작입니다. 행렬 계산에 그치지 않고 우리는 Activation function을 적용해 줄 것입니다. 활성 함수라고 하죠 그 이유는 모델 전체에 Nonlinearity (비선형성) 성질을 부여하기 위함입니다. 사연이 있는 행위 지만 여기선 간단하게 '어려운 문제 풀기 위해 사용'됐다고 하겠습니다. (* 전공자시라면 반드시 찾아보시길!) 여기선 가장 .. 2022. 1. 4.
MLP from Scratch with Numpy [2 / 7] - feed forward2 지난 포스팅의 확장입니다. 실제 MNIST 데이터에 적용하기 MNIST 데이터의 크기는 [28 x 28]의 이미지라고 말씀드렸어 이걸 한 줄로 죽 늘어뜨리면 [1 x 784] vector로 표현할 수 있습니다. 그럼 지난 포스팅에서 봤던 input layer \( I \)의 크기는 어떻게 될까요? [1 x 784] vector가 바로 input layer \(I\)로 표현됩니다~ 그다음은 Hidden layer \( H \)의 크기는 어떻게 정할까요? 사실 맘대로 하면 됩니다. 크게 하면 연산량이 많아지며 복잡한 문제를 해결할 수 있는 가능성이 생기고요 작게 하면 그 반대입니다 Vise Versa. 저는 그냥 [1 x 100] 사이즈의 vector로 만들어 주겠습니다. 마지막으로 output layer .. 2022. 1. 3.
MLP from Scratch with Numpy [1 / 7] - feed forward1 계획의 시작 MLP입니다. MLP with 2 layer 모델로 MNIST 분류 문제를 풀어보겠습니다. 우선 아주 쉽게 축소하여 한번 가봅시다! 보통 Hidden layer의 수와 Output layer의 수를 합쳐서 layer 수를 결정하는 것으로 추정됩니다. 아마 곱해지는 행렬이 2개라서 그런것 같습니다. [그림 1] 에 추상화된 MLP 모델이 그려져 있습니다. Input layer를 [1 x 3] vector \(I\) Hidden layer를 [1 x 4] vector \(H\) Output layer를 [1 x 3] vector \(O\) \(W^0\), \(W^1\) 은 행렬입니다. 행렬 곱셈에는 in(곱해지는 것)과 out(결과)을 알고 있다면 그 형태에 끼워 맞춘 행렬을 만들 수가 있.. 2022. 1. 3.
MLP from Scratch with Numpy [0 / 7] - Classification 사전작업 앞으로 모델들은 Kaggle의 MNIST데이터를 이용하여 시동? 검증하려고 합니다. import numpy as np import pandsa as pd import random import matplotlib.pyplot as plt MNIST데이터 자체의 난이도가 너무 낮아 틀린 모델이더라도, 정확도가 높은 경우가 생길 수 있으니 ImageNet 데이터로 재차 검증을 해야 할지도 모르겠습니다. [귀찮아서 안 할 것 같긴 합니다. 하하] 일단 데이터부터 받아줍시다! import os os.environ['KAGGLE_USERNAME'] = # username os.environ['KAGGLE_KEY'] = # key 압축 해제를 해주시고요~~ !kaggle competitions download -c .. 2022. 1. 3.