파이썬/딥러닝 구현
다층 퍼셉트론의 구현(XOR)
오지고지리고알파고포켓몬고
2017. 5. 14. 18:16
def AND(x1, x2): w1, w2, theta = 0.5, 0.5, 0.99 tmp = x1*w1 + x2*w2 result = 0 if tmp <= theta else 1 return result def OR(x1, x2): w1, w2, theta = 0.5, 0.5, 0.49 tmp = x1*w1 + x2*w2 result = 0 if tmp <= theta else 1 return result def NAND(x1, x2): #x,w,b = np.array([x1, x2]), np.array([0.5, 0.5]), -0.99 x = np.array([x1, x2]) w = np.array([-0.5, -0.5]) b = 0.99 tmp = np.sum(w*x) + b result = 0 if tmp <= 0 else 1 return result def XOR(x1,x2): s1 = NAND(x1,x2) s2 = OR(x1,x2) result = AND(s1,s2) return result print(XOR(0,0)) print(XOR(1,0)) print(XOR(0,1)) print(XOR(1,1))
하나의 직선으로 XOR을 구분할 수 없음. 그래서 복합층으로 구현
x1 |
x2 |
s1 |
s2 |
y |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |