인공지능/머신러닝

[머신러닝 - Python] 퍼셉트론 AND, NAND, OR 게이트 구현 (Perceptron AND, NAND, OR Gate implementation)

바보1 2022. 5. 7. 00:23
import numpy as np


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
    elif tmp > 0:
        return 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
    elif tmp > 0:
        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
    elif tmp > 0:
        return 1


for i in [0, 1]:
    for j in [0, 1]:
        print(f'{i, j}', end=' ')

print()
print('AND : ', end = '')
for i in [0, 1]:
    for j in [0, 1]:
        print(AND(i, j), end = ' ')

print()
print('NAND : ', end = '')
for i in [0, 1]:
    for j in [0, 1]:
        print(NAND(i, j), end = ' ')

print()
print('OR : ', end = '')
for i in [0, 1]:
    for j in [0, 1]:
        print(OR(i, j), end = ' ')
(0, 0) (0, 1) (1, 0) (1, 1) 
AND : 0 0 0 1 
NAND : 1 1 1 0 
OR : 0 1 1 1

 

가중치(w)는 입력 신호가 결과에 주는 영향력(중요도)을 조절하는 매개변수이고,

편향은 뉴런이 얼마나 쉽게 활성화(결과로 1을 출력) 하느냐를 조정하는 매개변수이다.