8장 다층 퍼셉트론¶
다층 퍼셉트론으로 XOR 문제 해결하기¶
In [1]:
Copied!
import numpy as np
# 가중치와 바이어스
w11 = np.array([-2, -2])
w12 = np.array([2, 2])
w2 = np.array([1, 1])
b1 = 3
b2 = -1
b3 = -1
# 퍼셉트론
def MLP(x, w, b):
y = np.sum(w * x) + b
if y <= 0:
return 0
else:
return 1
# NAND 게이트
def NAND(x1,x2):
return MLP(np.array([x1, x2]), w11, b1)
# OR 게이트
def OR(x1,x2):
return MLP(np.array([x1, x2]), w12, b2)
# AND 게이트
def AND(x1,x2):
return MLP(np.array([x1, x2]), w2, b3)
# XOR 게이트
def XOR(x1,x2):
return AND(NAND(x1, x2),OR(x1,x2))
# x1, x2 값을 번갈아 대입해 가며 최종 값 출력
for x in [(0, 0), (1, 0), (0, 1), (1, 1)]:
y = XOR(x[0], x[1])
print("입력 값: " + str(x) + " 출력 값: " + str(y))
import numpy as np
# 가중치와 바이어스
w11 = np.array([-2, -2])
w12 = np.array([2, 2])
w2 = np.array([1, 1])
b1 = 3
b2 = -1
b3 = -1
# 퍼셉트론
def MLP(x, w, b):
y = np.sum(w * x) + b
if y <= 0:
return 0
else:
return 1
# NAND 게이트
def NAND(x1,x2):
return MLP(np.array([x1, x2]), w11, b1)
# OR 게이트
def OR(x1,x2):
return MLP(np.array([x1, x2]), w12, b2)
# AND 게이트
def AND(x1,x2):
return MLP(np.array([x1, x2]), w2, b3)
# XOR 게이트
def XOR(x1,x2):
return AND(NAND(x1, x2),OR(x1,x2))
# x1, x2 값을 번갈아 대입해 가며 최종 값 출력
for x in [(0, 0), (1, 0), (0, 1), (1, 1)]:
y = XOR(x[0], x[1])
print("입력 값: " + str(x) + " 출력 값: " + str(y))
입력 값: (0, 0) 출력 값: 0 입력 값: (1, 0) 출력 값: 1 입력 값: (0, 1) 출력 값: 1 입력 값: (1, 1) 출력 값: 0