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')
test= pd.read_csv('test.csv')
필요한 변수들을 설정해 주겠습니다.
Label = train['label'].values
Train = train.drop(columns=['label']).values/255
Test = test.values/255
[N,size_input]=Train.shape
아래에는 쓰여질 함수들!! Activation function 인 ReLU와 그의 미분, Softmax 함수
def ReLU(x):
return np.maximum(0,x)
def ReLU_derivative(x):
return x>0
objective 함수이자 cost함수인 cross entropy 함수 정의 해주시고~
def cross_entropy(pred,Label):
true = np.eye(num_class)[Label]
loss = (np.log(pred) * true).sum(axis=1)
return -np.sum(loss)
\(W^0,W^1\) 행렬을 W 리스트에 담아주시고~~
num_class=10
num_iter = 5
num_Hidden = 256
np.random.seed(1127) #for the experimental stability
#W[0]= Matrix_input_to_Hidden_layer, W[1]= MAtrix_Hidden_to_output_layer
W= [1e-1*np.random.randn(size_input, num_Hidden), 1e-1*np.random.randn(num_Hidden, num_class)]
계산 해주면 됩니다~!
def feed(Input,Matrix):
Hidden = np.dot(Input, Matrix[0])
z_1=Hidden
Activation = ReLU(z_1)
z_2=np.dot(Activation,Matrix[1])
#Softmax Part
s=np.exp(z_2)
total = np.sum(s, axis=1).reshape(-1,1)
Output = s/total
return Outpu
따란~~
Output = feed(Train,Label)
최종적으로 Output을 얻어낼수 있었습니다~!
다음 포스팅에서 진짜로 중요한 BackPropagation!! 시자아아아악 하겠습니다아ㅏㅏㅏㅏㅏㅏㅏ
'Have Done > MLP' 카테고리의 다른 글
MLP from Scratch with Numpy [6 / 7] - backpropagation2 (0) | 2022.01.06 |
---|---|
MLP from Scratch with Numpy [5 / 7] - backpropagation1 (0) | 2022.01.06 |
MLP from Scratch with Numpy [3 / 7] - Activation (0) | 2022.01.04 |
MLP from Scratch with Numpy [2 / 7] - feed forward2 (0) | 2022.01.03 |
MLP from Scratch with Numpy [1 / 7] - feed forward1 (0) | 2022.01.03 |
댓글