在了解感知机之前的先知道1943年Mccilloch和Pitts所提出的M-P模型。

M-P模型其实就是现在的神经网络中的一个神经元,但是与之不同的点在于它没有非线性激活函数激活,也不能这么说,就是没有类似sigmoid或者tanh函数激活,而它用的仅仅是一个阈值去激活。
所以它的数学表达式为:

此处的f函数就是阈值函数。但是这里的权重w和偏置b都是人为设定的,并不存在学习一说,这就是M-P模型与单层感知器最大的区别。感知机中的权重w和偏置b是靠学习得来的。
接下来就是感知机学习算法的介绍。
对于误差,有一种方法是神经元的期望输出与实际输出之差,作为学习信号。
权重调整公式为:

其中dj为期望输出,sgn为实际输出。为控制学习速率的超参数。后面的xi为样本变量。

上代码!

# -*- 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]]);#设定输入向量的期待输出值    二分类  1和-1
Y=np.array([1,1,1,-1,-1,-1]);#设定权值向量(w0,w1,w2),权值范围为-1,1 中间层为一个神经元  输入层为3个神经元 所以为3*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-O.T).dot(X));W = W+W_Tmp;if __name__ == '__main__':for index in range (100):update()O=np.sign(np.dot(X,W.T))print(O)print(Y)if(O == Y).all():print('Finished')print('epoch:',n)break
x1=[3,4]
y1=[3,3]
x2=[1]
y2=[1]k=-W[1]/W[2]
d=-W[0]/W[2]print('k=',k)print('d=',d)
xdata=np.linspace(0,5)
plt.figure()
plt.plot(xdata,xdata*k+d,'r')
plt.plot(x1,y1,'bo')
plt.plot(x2,y2,'yo')
plt.show()

【神经网络】单层感知器相关推荐

  1. 神经网络 | 单层感知器从0到1(附Python源代码)

    ===================================================== github:https://github.com/MichaelBeechan CSDN: ...

  2. 深度学习(神经网络)[1]——单层感知器

    深度学习(神经网络)[1] -- 单层感知器 算法描述 python实现 示例运行结果 可视化 算法描述 最原始的神经网络模型,类似于神经网络中的单个神经元,该算法局限性也很大,只适用于解决线性可分的 ...

  3. 神经网络算法-论证单层感知器的局限性

    神经网络算法-论证单层感知器的局限性 今天课上学习了一个思路 将真值表转换到平面直角坐标系中 来论证线性可分还是不可分,挺有意思记录一下. 简单感知器模型实际上仍然是MP模型的结构,但是它通过采用监督 ...

  4. 神经网络学习(1)————单层感知器以及python实现

    一.感知器模型 单层感知器是感知器中最简单的一种,有单个神经元组成的单层感知器只能用于解决线性可分的二分性问题.在空间中如果输入的数据是可分的,感知器相当于将输入的数据在空间中分为两类,已经证明,如果 ...

  5. 单层感知器线性分类、多层感知器非线性分类样例 调用matlab神经网络工具箱实现

    %给定样本输入向量P,目标输出向量T %net = newp(PR,S,TF,LF) %PR为输入矢量的取值范围的最大值和最小值 S为神经元的个数 TF为网络的传递函数 默认为hardlim LF为网 ...

  6. 神经网络 | 网络优化-线性神经网络-delta学习规则-梯度下降法(单层感知器-异或问题Python源代码)

    ===================================================== github:https://github.com/MichaelBeechan CSDN: ...

  7. 深度学习--TensorFlow (1)单层感知器1 -- 实现单数据训练

    目录 一.基础理论 1.单词感知器介绍 2.单词感知器学习规则 前向传递(得到输出y) 反向传递(更新权重w) 二.实现单层感知器 1.初始参数设置 2.正向传播(得到输出y) 3. 反向传播(更新权 ...

  8. 人工神经网络:感知器

    人工神经网络:感知器 1.1 基本概念 1.输入节点:X1={x1,x2,x3,...,xi,...xn},for example,X1=[1 2]'; 2.输出节点:y={y1,y2},for ex ...

  9. 如何利用 C# 实现神经网络的感知器模型?

    前几天我们介绍了 如何利用 C# 对神经网络模型进行抽象,在这篇图文中,我们抽象了单个神经元 Neuro,网络层 Layer,网络结构 Network,激活函数 IActivationFunction ...

  10. 为什么在反向传播中感知器初始值不能为0_深度学习理论分享之——单层感知器简述...

    1单层感知器概述单层感知器(Single Layer Perceptron)是最简单的神经网络.它包含输入层和输出层,而输入层和输出层是直接相连的.单层感知器属于感知器中最简单的一种分类器,属于机器学 ...

最新文章

  1. CB:南土所梁玉婷组-细菌群落的高稳定性和代谢能力促进了土壤中易分解碳的快速减少...
  2. MIT发布白皮书:美国欲重返世界半导体霸主!
  3. MDX Step by Step 读书笔记(五) - Working with Expressions (MDX 表达式)
  4. django 的form登录 注册
  5. 服务器tcp连接占满_漫画 | 一台Linux服务器最多能支撑多少个TCP连接?
  6. 快速找到由程序员到CTO发展道路上的问路石
  7. 收集的安装VS2005 sp1的注意事项
  8. oracle统计信息导出与导入目的,Oracle统计信息的导出与导入
  9. TS笔记--------Jonathan
  10. android应用程序优化之布局优化
  11. 网络安全哪个培训班比较好?挑战年薪百万的技术型人才
  12. CUPS共享打印机服务
  13. Matlab之双坐标轴绘制plotyy
  14. 回忆我的过去一年2020年考研以及研究生规划
  15. 新三板专家程晓明:四板将是推动区块链技术与资本市场结合试验田
  16. 解决在win2003 enterprise上搭建IIS遇到的“需要Service Pack 2 CD-Rom 上的文件“问题
  17. mysql存储过程和mysql函数
  18. linux基因组文件,转录组入门(四):了解参考基因组及基因注释
  19. vue2.0怎么渲染html,vue采坑之——vue里面渲染html 并添加样式
  20. 在文件选择打开方式里,无法添加.exe程序怎么解决

热门文章

  1. Cisco交换机IOS升级
  2. OK6410之uboot移植
  3. graphpad图片怎么导出矢量图_怎样将PS图像输出为矢量图
  4. JS中的 回调函数(callback)
  5. 哪些软件可以做国外问卷调查
  6. git clone提示鉴权失败
  7. 023_fireshot
  8. Office卸载不干净,注册表项权限修改后仍然无法删除的问题
  9. PHP保存图片并且修改图片分辨率(DPI)
  10. untiy3d坐标系以及向量运算