728x90
반응형
# 가중치와 편향 구현

def AND(x1,x2):
    x = np.array([x1, x2]) # 입력값
    w = np.array([0.5,0.5]) # 가중치 
    b = -0.7 #  편향
    
    tmp = np.sum(x*w) + b
    if tmp <= 0:
        return 0
    else: 
        return 1
# w1과 w2는 각 입력 신호가 결과에 주는 영향력을 조절하는 매개변수, 편향은 뉴런이 얼마나 쉽게 활성화(결과로 1 출력)하느냐를 
# 조정하는 매개변수
# 편향은 '한쪽으로 치우쳐 균형을 깬다.'라는 의미를 담고 있다.

def NAND(x1, x2):
    x = np.array([x1, x2]) # 입력
    w = np.array([-0.5, -0.5]) # 가중치
    b = 0.7 # 편향
    tmp = np.sum(w*x) + b
    
    if tmp <= 0:
        return 0
    else:
        return 1


def OR(x1, x2):
    x = np.array([x1, x2]) # 입력 
    w = np.array([0.5, 0.5]) # 가중치
    b = -0.2
    tmp = np.sum(x*w) + b
    
    if tmp <=0 :
        return 0
    else:
        return 1

print("AND" ,AND(0,0),AND(0,1),AND(1,0),AND(1,1))
print("NAND",NAND(0,0),NAND(0,1),NAND(1,0),NAND(1,1))
print("OR", OR(0,0),OR(0,1),OR(1,0),OR(1,1))

[그림1] AND,NAND,OR 결과

AND, NAND,OR 모두 같은 구조의 퍼셉트론이고 차이는 가중치 매개변수의 값이다.

 

하지만 퍼셉트론으로는 XOR게이트는 만들지 못한다. (단일로는) *다중퍼셉트론으로 구현은 가능하다.

XOR 게이트는 배타적 논리합이라는 논리 회로다.

 

[그림2] XOR 배타적 논리합 출처 : http://www.ktword.co.kr/abbr_view.php?m_temp1=4420

 

 

 

출처 : 밑바닥부터 시작하는 딥러닝

https://www.hanbit.co.kr/store/books/look.php?p_code=B8475831198

 

밑바닥부터 시작하는 딥러닝

직접 구현하고 움직여보며 익히는 가장 쉬운 딥러닝 입문서

www.hanbit.co.kr

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기