人工神经网络(三)单层感知器代码实现
来源:互联网 发布:不在乎大国崛起 知乎 编辑:程序博客网 时间:2024/05/16 08:50
上篇文章,我们介绍了什么是单层感知器,这节课,我们来看看如果用代码实现一个单层感知器
实验问题:
假设平面坐标系上有三个点(3,3),(4,3)这两个坐标点的标签为 1 ,(1,1) 这个坐标的标签为-1 ,构建神经网络来分类
思路:
二维数据,需要两个数据点,将神经元偏置设置成另一个输入点,一共需要三个输入点
输入数据:(1,3,3),(1,4,3),(1,1,1)
数据对应标签为(1,1,-1)
初始化权值为w0,w1,w2 为 -1 到 1 的随机数
学习率为0.11
激活函数:sign
最终我们确定下来的是w0,w1,w2
那么分界线的表达式为: w0+w1*x1+w2*x2=0
因为x2为y轴上的值,那么最终的表达式为:
y=(-w1/w2)*x - -w0/w2
权向量和输入归纳为矩阵表达:
权值调整:
lr*(Y-O.T).dot(X)/int(X.shape[0])
(Y-O.T):是实际输出与期望输出的误差
这样我们就可以去套用权值校验公式了
具体代码为:
#单层感知器import numpy as npimport matplotlib.pyplot as plt#输入数据X = np.array([[1,3,3], [1,4,3], [1,1,1]])#标签Y = np.array([1,1,-1])#权值初始化一行三列,取值范围-1到1W = (np.random.random(3)-0.5)*2print("W is :",W)#学习率设置lr = 0.11#计算迭代次数n = 0#神经网络输出O=0def update(): global X,Y,W,lr,n,O n += 1 O = np.sign(np.dot(X,W.T)) W_C = lr*(Y-O.T).dot(X)/int(X.shape[0]) #权值需要改变的值 W = W+W_C #修正权值for _ in range(100): update() #更新权值 print("W:",W) #打印权值 print("n",n) #打印迭代次数 O = np.sign(np.dot(X,W.T)) #计算当前输出 if(O==Y.T).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()
结果:
后台日志为:
阅读全文
0 0
- 人工神经网络(三)单层感知器代码实现
- 人工神经网络(三)单层感知器代码实现
- 人工神经网络(二)单层感知器
- 人工神经网络(二)单层感知器
- 单层感知器神经网络
- 感知器 人工神经网络
- 神经网络之单层感知器网络(人工智能)
- 神经网络学习之单层感知器
- 人工神经网络的设计与实现(二) 感知机
- 单层感知机及其代码实现
- 人工神经网络(四)感知器学习规则推导
- 人工神经网络(四)感知器学习规则推导
- 人工神经网络之感知器算法
- 人工神经网络之感知器算法
- 人工神经网络的设计与实现(三) BP神经网络
- 人工神经网络入门(1) —— 单层人工神经网络应用示例
- 神经网络-感知器算法python代码实现
- 单层感知器的MATLAB实现
- Deep Learning : 深度前馈神经网络(三)
- < 笔记 > Git
- Ubuntu 17.10 的安装 step 1
- Linux入门学习五——文件属性的查看
- java线程(多线程、线程同步、定时处理)
- 人工神经网络(三)单层感知器代码实现
- LeetCode-26:Remove Duplicates from Sorted Array (清除数组重复元素)
- 088 定积分几何应用之面积、体积、弧长计算方法总结
- 整理中:使用 Visual Studio Code (vscode) 编写、运行、 调试 Java 应用程序
- 第三周项目3-求集合并集
- RS232串口通信详解
- centos6.9编译安装httpd2.4(1)
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- poj 丛林中的树