感知器实现and函数

感知器实现and函数

在人工智能领域,有一个方法叫机器学习。在机器学习这个方法里,有一类算法叫神经网络,感知器也叫作神经元,是神经网络的基本组成单元。
一个感知器有如下组成部分:

1.输入权值
一个感知器可以接收多个输入(x1,x2…),每个输入上有一个权值(w1,w2…),此外还有一个偏置项b,用w0来表示。

2.激活函数
感知器的激活函数可以有很多选择,我们可以选择阶跃函数来作为激活函数,阶跃函数是在输入值未达到阈值后,输出一直为0,当输入达到阈值,输出值做突然的跳转
3.输出
感知器的训练
前面的权重项和偏置项的值要用到感知器训练算法来获得
将权重项和偏置项随机初始化值,然后,利用梯度下降算法迭代的修改wi以及b,直到训练完成。
每次从训练数据中取出一个样本的输入向量,使用感知器计算其输出,再根据梯度下降算法来调整权重。每处理一个样本就调整一次权重。经过多轮迭代后(即全部的训练数据被反复处理多轮),就可以训练出感知器的权重,使之实现目标函数。

import numpy as np
from numpy import exp, random


def forward(input):
    a1 = w * input
    a2 = a1.sum() + b
    if a2 > 0:
        out = 1
    else:
        out = 0
    return out


def backward(t, y, x):
    w_delta = (t - y) * x
    # print(w_delta.shape)
    b_delta = (t - y)
    return w_delta, b_delta


x = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
t = np.array([0, 0, 0, 1])
random.seed(1000)
w = random.random((1, 2))
b = random.random()

j = 0
for i in range(10000):
    # print(x[j,:])
    # print(x[j])
    input = x[j, :]
    y = forward(input)
    w_delta, b_delta = backward(t[j], y, x[j])
    w = w + 0.01 * w_delta
    b = b + 0.01 * b_delta
    # print(j)
    if j < 3:
        j += 1
    else:
        j = 0

print(y)
print(w, b)

1
[[0.15358959 0.02500694]] -0.16971713565097618

第10000次所用数据为1,1 结果为1

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值