与非门实现异或门_鱼书_第二章_感知机_简单实现

895fe64d139706b72abbcfe82601241a.png

与门(AND)

a45fb71ac810a589a205973f4b8b964c.png
图1 与门

权重需满足的条件:

0<=theta

w2<=theta

w1<=theta

w1+w2>theta

# theta:阈值

d6f46a1df6f37441487b8c2b9a0a7f46.png
图2 与门简单实现
# 导入权重和偏置
# 设b=-theta
#w1*x1+w2*x2+b>0
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 1
    elif tmp<=0:
        return 0
AND(0,1)

954b5c22db9c6c631c68716670b78ee1.png
图3 与门简单实现

与非门(NAND)

cd7d45d0f242f00325e983ee91ba61ce.png
图4 与非门

权重需满足的条件:

0>theta

w2>theta

w1>theta

w1+w2<=theta

# 与非门
import numpy as np
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 1
    elif tmp<=0:
        return 0
NAND(1,1)

6023dbe08c3e4b32c0c65d21641cdb6f.png
图5 与非门简单实现

或门(OR)

7c58e2a0a222fd3bf1395a96a5ab2938.png
图6 或门

权重需满足的条件:

0<=theta

w2>theta

w1>theta

w1+w2>theta

# 或门
import numpy as np
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 1
    elif tmp<=0:
        return 0
OR(1,0)

423dccbd1b1f7d8afe7dd99ba16e318e.png
图7 或门简单实现

异或门(XOR)

489d26137744014d58c01649740ce2a4.png
图8 异或门

权重需满足的条件:

0<=theta

w2>theta

w1>theta

w1+w2<=theta

显然用前面介绍的感知机是无法实现这个异或门的,我们可以使用多层感知机实现异或门。

5d9866a8cd1b18806394877607f97e50.png
图9 真值表
# 感知机的局限-异或门
# 单层感知机无法实现异或门 0<=theta;w1>theta;w2>theta;w1+w2<=theta  显然不成立
# 但是我们可以使用  多层感知机   来解决异或门的问题
import numpy as np
def XOR(x1,x2):
    s1=NAND(x1,x2)
    s2=OR(x1,x2)
    y=AND(s1,s2)
    return s1,s2,y
r1,r2,r3=XOR(0,1)
print("result=",r3)

8cc06f33e36fed244d6275917499ea95.png
图10 异或门简单实现

ZCyu's python 学习笔记 5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值