[Python] 퍼셉트론으로 AND, NAND, OR 구현

KingU·2021년 12월 5일
0

Python

목록 보기
8/11
post-thumbnail

퍼셉트론 복습 겸 AND, NAND, OR 구현 정리




AND


가중치와 평향이 없는 AND


# 1) x1과 x2를 인수로 받는 AND
def AND(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.7
    tmp = x1*w1 + x2*w2
    if tmp <= theta:
        return 0 
    elif tmp > theta:
        return 1
        
print(AND(0, 0))
print(AND(0, 1))
print(AND(1, 0))
print(AND(1, 1))

결과값





가중치와 평향을 numpy로 구현


# 2) 가중치와 편향을 numpy로 구현
import numpy as np
x = np.array([0, 1])    # 입력
w = np.array([0.5, 0.5])    # 가중치
b = -0.7    # 편향
np.sum(w*x) + b    # 부동소수점 수에 의한 연산 오차

결과값





가중치와 평향을 도입한 AND


# 1) + 2) 둘을 합친 가중치와 편향을 도입한 AND
def AND(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
        
print(AND(0, 0))
print(AND(0, 1))
print(AND(1, 0))
print(AND(1, 1))

결과값




XOR, OR

가중치와 평향을 도입한 XOR, OR


import numpy as np

# 가중치와 편향을 도입한 NAND, OR
def NAND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])    # AND와 가중치만 다름
    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(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1

결과값





AND, NAND, OR은 모두 선형 영역





당신의 시간이 헛되지 않는 글이 되겠습니다.
I'll write something that won't waste your time.

profile
원하는 것을 창조하고 창조한 것을 의미있게 사용하자

0개의 댓글

관련 채용 정보