신경망 코드 공부를 위한 퍼셉트론 구현
# 입력이 모두 참(1)일때 참(1) 출력
def AND_gate(x1, x2):
# 임의의 모델
w1 = 0.4
w2 = 0.2
b = -0.5
w_sum = (w1 * x1) + (w2 * x2) + b
if w_sum <= 0:
return 0
else:
return 1
# 입력이 하나라도 거짓(0)일때 참(1) 출력
def NAND_gate(x1, x2):
# 임의의 모델
w1 = 0.4
w2 = 0.2
b = -0.5
w_sum = (w1 * x1) + (w2 * x2) + b
if w_sum >= 0:
return 0
else:
return 1
# 입력이 하나라도 참(1)일때 참(1) 출력
def OR_gate(x1, x2):
# 임의의 모델
w1 = 0.5
w2 = 0.5
b = -0.2
w_sum = (w1 * x1) + (w2 * x2) + b
if w_sum <= 0:
return 0
else:
return 1
# 메인함수
if __name__ == "__main__":
print("\nAND")
print("(0,0) = ", AND_gate(0, 0))
print("(0,1) = ", AND_gate(0, 1))
print("(1,0) = ", AND_gate(1, 0))
print("(1,1) = ", AND_gate(1, 1))
print("\nNAND")
print("(0,0) = ", NAND_gate(0, 0))
print("(0,1) = ", NAND_gate(0, 1))
print("(1,0) = ", NAND_gate(1, 0))
print("(1,1) = ", NAND_gate(1, 1))
print("\nOR")
print("(0,0) = ", OR_gate(0, 0))
print("(0,1) = ", OR_gate(0, 1))
print("(1,0) = ", OR_gate(1, 0))
print("(1,1) = ", OR_gate(1, 1))
임의의 모델(w1, w2, b)를 설정하여 AND, NAND, OR 구현
요 w1, w2를 학습하게 하면 인공지능학습이 됨

단층 퍼셉트론의 단점은 XOR 문제를 해결할 수 없다는 것
NAND와 OR를 한 결과를 AND 하면 해결
# 입력이 서로 다를때 참(1) 출력
def XOR_gate(x1, x2):
layer1 = NAND_gate(x1, x2)
layer2 = OR_gate(x1, x2)
y = AND_gate(layer1, layer2)
return y
if __name__ == "__main__":
print("\nXOR")
print("(0,0) = ", XOR_gate(0, 0))
print("(0,1) = ", XOR_gate(0, 1))
print("(1,0) = ", XOR_gate(1, 0))
print("(1,1) = ", XOR_gate(1, 1))
