딥러닝 -1 (sigmoid, relu, step function, 신경망 구조, 순전파)

고강희·2023년 1월 12일
0

1. 2개의 input과 2개의 output으로 이루어져있고 hidden layer가 두개이고 각각 3개, 2개일때의 신경망 구현

matrix multiplication을 잘 활용한다.

XW+B 연산이 이루어지기 위해선 W의 형상을 잘 맞춰 주어야함. 입력은 (1,2), 첫번째 hidden layer는 (1,3)이므로 둘사이의 W의 형상은 (2,3)이 되어야함. 똑같은 방식으로 첫번째 hidden layer와 두번째 hidden layer 사이의 W의 형상은 (3,2)가 된다. 이를 표현하면 아래 그림과 같음.

hidden layer, 입력갯수, 출력 갯수를 입력받을 때 매개변수의 형상을 바로 설정해주는 class

import numpy as np
import activation as act

class ThrereLayers:
    def __init__(self,hidden,input,output):
        self.network = {}
        self.n = len(hidden)+1
        prev = input
        for i in range(len(hidden)):
            self.network[f'W{i+1}'] = np.random.randn(prev,hidden[i])
            self.network[f'B{i+1}'] = np.random.randn(1,hidden[i])
            prev = hidden[i]        
        
        self.network[f'W{self.n}'] = np.random.randn(prev,output)
        self.network[f'B{self.n}'] = np.random.randn(1,output)

    def forward(self,x):
        Z = x
        A = x
        for i in range(self.n):
            A = np.dot(Z,self.network[f'W{i+1}']) + self.network[f'B{i+1}']
            Z = act.sigmoid(A)
        
        print(A)


TL = ThrereLayers([3,2],2,2)
TL.forward([1.0,0.5])
profile
그냥 AI 관련 유익해보이는거 이것저것 적어놓음

0개의 댓글