본문 바로가기
Have Done/MLP

MLP from Scratch with Numpy [4 / 7] - feed forward 코딩 흐름

by 에아오요이가야 2022. 1. 5.

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!! 시자아아아악 하겠습니다아ㅏㅏㅏㅏㅏㅏㅏ

댓글