感知器实现

import numpy as np


alpha = 0.01
theta0 = 0.5
theta1 = 0.5
theta2 = 1

x1 = np.array([0, 0, 1, 1])
x2 = np.array([0, 1, 0, 1])
y = np.array([0, 0, 0, 1])
y2 = np.array([0,1,1,1])
def mysum(x1,x2):
    return theta0+theta1*x1+theta2*x2


def activate(p,q):
    if (mysum(p,q)>0):
        return 1
    else:
        return 0

for i in range(1000):
    theta0 = theta0-alpha*(mysum(x1[i%4],x2[i%4]) - y[i%4])
    theta1 = theta1-alpha*(mysum(x1[i%4],x2[i%4])-y[i%4])*x1[i%4]
    theta2 = theta2-alpha*(mysum(x1[i%4],x2[i%4])-y[i%4])*x2[i%4]
    error0 = (mysum(x1[i%4],x2[i%4]) - y[i%4])
    error1 = (mysum(x1[i%4],x2[i%4]) - y[i%4])*x1[i%4]
    error2 = (mysum(x1[i%4],x2[i%4])-y[i%4])*x2[i%4]
    while (abs(error0)<0.01 and abs(error1)<0.01 and abs(error2)<0.01):

         print(error0,error1,error2)







实验结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
感知器无法直接实现异或逻辑,因为异或逻辑不是线性可分的。但是可以通过组合多个感知器实现异或逻辑。 具体来说,可以使用两个输入信号和一个输出信号的三层感知器实现异或逻辑。其中,第一层和第二层分别使用与门和或门的感知器,第三层使用与非门的感知器。具体实现如下: 第一层感知器实现与门逻辑: ``` import numpy as np def perceptron_and(x1, x2): # 初始化权重和阈值 w = np.array([0.5, 0.5]) b = -0.7 # 计算输出 y = 1 if np.sum(w * np.array([x1, x2])) + b >= 0 else 0 return y ``` 第二层感知器实现或门逻辑: ``` import numpy as np def perceptron_or(x1, x2): # 初始化权重和阈值 w = np.array([0.5, 0.5]) b = -0.2 # 计算输出 y = 1 if np.sum(w * np.array([x1, x2])) + b >= 0 else 0 return y ``` 第三层感知器实现与非门逻辑: ``` import numpy as np def perceptron_nand(x1, x2): # 初始化权重和阈值 w = np.array([-0.5, -0.5]) b = 0.7 # 计算输出 y = 1 if np.sum(w * np.array([x1, x2])) + b >= 0 else 0 return y ``` 最终的三层感知器实现异或逻辑: ``` def perceptron_xor(x1, x2): s1 = perceptron_nand(x1, x2) s2 = perceptron_or(x1, x2) y = perceptron_and(s1, s2) return y ``` 可以测试一下输入信号为(0, 0)、(0, 1)、(1, 0)、(1, 1)时的输出结果: ``` print(perceptron_xor(0, 0)) # 0 print(perceptron_xor(0, 1)) # 1 print(perceptron_xor(1, 0)) # 1 print(perceptron_xor(1, 1)) # 0 ``` 可以看到,输出结果符合异或逻辑的真值表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值