深度学习之(神经网络)单层感知器(python)(一)

感知器介绍

感知器(Perceptron),是神经网络中的一个概念,在1950s由Frank Rosenblatt第一次引入。
单层感知器(Single Layer Perceptron)是最简单的神经网络。它包含输入层和输出层,而输入层和输出层是直接相连的。
与最早提出的MP模型不同,神经元突触权值可变,因此可以通过一定规则进行学习。可以快速、可靠地解决线性可分的问题。

单层感知器由一个线性组合器和一个二值阈值元件组成。
image.png

输入向量为x,权重向量为w,w0为偏执。

简单的理解可以解释为:将x0,x1······xn的变量输入,经过组合器的整合,输出1或者-1,也就是通过组合器对输入变量判断其正确与否。

而这个判断的依据就是权重w0,w1······wn。

因为线性组合器是实现加法的方式,根据向量的运算法则,所以以上公式的输入值可以理解为:
w0+x1w1+······+xnwn
image.png
单个数据的输入判断就是这样,下面我们将它扩展到多个数据,如下图所示:
image.png

在整个的感知器算法中,是有明确的数学公式,通过线性组合器的组装进行分类判断:
image.png
这就是详细的组合器算法。其中偏振因子b,一般会用w0表示,这时会加入一个偏振输入变量x0,不过x0恒等于1,也就是以上所描述的公式。

下面整体的介绍一下单层感知器算法模型:
image.png

感知器算法模型

神经元期望的输出值已知;
根据实际的输入值向量X,和初始的权值向量W(已知),经过线性感知器求得实际的输出值(一般为值是1或者-1的向量)。
使用神经元期望的输出值减去实机的输出值,求得差值,再和设定的学习率相乘后,再和输入向量相乘,求得权值变化的向量。(也就是得到对输入向量的调整后的向量)
将权值向量W和得到的变化向量相加,重复以上动作,直到期望输出和实际输出相等。

因为期望输出的值为(1或者-1)
即:w0+w1x1+······+wnxn>0或w0+w1x1+······+wnxn<0
所以它们的分界线为:
w0+w1x1+······+wnxn=0

二维时为:
w0+w1x1+w2x2=0

w2x2=-w1x1-w0
x2=-(w1/w2)x1-w0/w2

x2=kx1+b

image.png

代码

# -*- coding: UTF-8 -*-

# numpy 支持高级大量的维度数组与矩阵运算
import numpy  as np
# Matplotlib 是一个 Python 的 2D绘图库
import matplotlib  as mpl
import matplotlib.pyplot as plt


#定义坐标,设定6组输入数据,每组为(x0,x1,x2)
X=np.array([[1,4,3],
            [1,5,4],
            [1,4,5],
            [1,1,1],
            [1,2,1],
            [1,3,2]]);

#设定输入向量的期待输出值
Y=np.array([1,1,1,-1,-1,-1]);

#设定权值向量(w0,w1,w2),权值范围为-1,1
W = (np.random.random(3)-0.5)*2; 

#设定学习率
lr = 0.3;
#计算迭代次数
n=0;
#神经网络输出
O=0;


def  update():
    global  X,Y,W,lr,n;
    n=n+1;
    O=np.sign(np.dot(X,W.T));
    #计算权值差
    W_Tmp = lr*((Y-
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值