使用阶跃函数实现感知器

  1. 收先导入数据,这个中先将数据存储到x,y中,x中第一行第一个是相当于阈值,第二三个就是输入值,y中的就是输出值
x = array([[1,-0.5,-0.5],
      [1,-0.5,0.5],
      [1,0.3,-0.5],
      [1,0,1]])
y = array([[1.0],
      [1.0],
      [0],
      [0]])
  1. 设置一个三行一列的权重
weights = np.random.random([3,1])
  1. 写一个阶跃函数的方法,将大于0的设置为1,小于0的设置为0.(这个根据自己的需要调整)这个我写到step()方法中
def step(x): 
  for i in range(len(x)):
    if x[i] > 0:
      x[i] = 1
      # print(x[i])
    else:
      x[i] = 0
  return x
  1. 设置步长d
  2. 设置一个更新迭代的方法,judge是每次经过激活函数算出来的值,然后weights2是步长 * 原值 * (原值与激活算法值之差),weights加上weights2
def update():
  global weights, judge, x, y
  judge = step(np.dot(x, weights))
  weights2 = d * (x.T.dot(y-judge))/int(x.shape[0])
  weights += weights
  1. 最后经过1000循环,当judge == y的时候就停止,.all()的意思是让矩阵中的每一个都相互对比看是否相同
for i in range(1000):
  update()
  judge = step(np.dot(x, weights))
  if(judge == y).all():
    break
print(judge)
print(i)

最后输出的结果

[[1.]
 [1.]
 [0.]
 [0.]]
203

可以用下列两种方法下载完整代码:

CSDN

github

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值