利用深度学习中感知机的知识实现以下门电路:与门、与非门、或门、或非门、异或门
代码如下:
'''2020.12.5
用代码实现与门、与非门、或门、或非门、异或门
注:w 和 b 这些参数的设置并非唯一
'''
import numpy as np
# 与门
def AND(x1,x2):
x = np.array([x1,x2])
w = np.array([0.5,0.5])
b = -0.7
y = np.sum(x*w)+b
if y<=0:
return 0
else:
return 1
print("与门:")
print("(0,0)=",AND(0,0))
print("(0,1)=",AND(0,1))
print("(1,0)=",AND(1,0))
print("(1,1)=",AND(1,1))
# 与非门
def NAND(x1,x2):
x = np.array([x1,x2])
w = np.array([-0.5,-0.5])
b = 0.7
y = np.sum(x*w)+b
if y<=0:
return 0
else:
return 1
print("与非门:")
print("(0,0)=",NAND(0,0))
print("(0,1)=",NAND(0,1))
print("(1,0)=",NAND(1,0))
print("(1,1)=",NAND(1,1))
# 或门
def OR(x1,x2):
x = np.array([x1,x2])
w = np.array([0.5,0.5])
b = -0.4
y = np.sum(x*w)+b
if y<=0:
return 0
else:
return 1
print("或门:")
print("(0,0)=",OR(0,0))
print("(0,1)=",OR(0,1))
print("(1,0)=",OR(1,0))
print("(1,1)=",OR(1,1))
# 或非门
def NOR(x1,x2):
x = np.array([x1,x2])
w = np.array([-0.5,-0.5])
b = 0.4
y = np.sum(x*w)+b
if y<=0:
return 0
else:
return 1
print("或非门:")
print("(0,0)=",NOR(0,0))
print("(0,1)=",NOR(0,1))
print("(1,0)=",NOR(1,0))
print("(1,1)=",NOR(1,1))
# 异或门
def XOR(x1,x2):
s1 = NAND(x1,x2)
s2 = OR(x1,x2)
y = AND(s1,s2)
return y
print("异或门:")
print("(0,0)=",XOR(0,0))
print("(0,1)=",XOR(0,1))
print("(1,0)=",XOR(1,0))
print("(1,1)=",XOR(1,1))